Подтвердить что ты не робот

Как удалить все символы после одного символа в строке?

У меня есть String, который содержит дату, например "01-01-2012", затем пробел, а затем время "01:01:01". Полная строка: "01-01-2012 01:01:01"

Я хотел бы извлечь только дату из этой строки, поэтому в конце я бы получил "01-01-2012", но не знаю, как это сделать.

4b9b3361

Ответ 1

Четыре варианта (последние два, добавленные для включения этого ответа, включают опции, заданные другими):

  • Разберите все это как дату/время, а затем просто выберите дату (время Joda или SimpleDateFormat)
  • Найдите первое пространство, используя indexOf и получив ведущую подстроку с помощью substring:

    int spaceIndex = text.indexOf(" ");
    if (spaceIndex != -1)
    {
        text = text.substring(0, spaceIndex);
    }
    
  • Доверьтесь, что он действителен в указанном формате и что первое пространство всегда будет иметь индекс 10:

    text = text.substring(0, 10);
    
  • Разделите строку пробелами и затем сделайте первый результат (кажется мне бесполезным неэффективным, но он будет работать...)

    text = text.split(" ")[0];
    

Вы должны подумать о том, что хотите, если нет места. Означает ли это, что данные были недействительными для начала? Если вы просто продолжите целую цепочку? Это будет зависеть от вашей ситуации.

Лично я, вероятно, поеду с первым вариантом - вы действительно хотите разобрать "01-12-2012 wibble-wobble bad data", как если бы это была действительная дата/время?

Ответ 2

String input = "01-01-2012 01:01:01";
String date = d.split(" ")[0];

Ответ 3

Попробуйте следующее:

String date = s.substring(0, s.indexOf(" "));

Или даже (поскольку длина фиксирована):

String date = s.substring(0, 10);

Или используйте StringUtils.substringBefore():

String date = StringUtils.substringBefore(s, " ");

Ответ 4

Множество способов сделать это, очень простой метод состоит в том, чтобы разбить String в пространстве и использовать первую часть (которая будет датой):

String dateTime = "01-01-2012 01:01:01";
String date = dateTime.split(" ")[0];

Ответ 5

Вы можете использовать String.split() и принимать только релевантные String в вашем resultng String[] [в вашем примере это будет myString.split(" ")[0]

Ответ 6

В этом случае, когда в строке находится только одно пространство, вы можете использовать String.split(" "). Но это плохая практика. Вы должны проанализировать дату с помощью DateFormat .

Ответ 7

Вы можете использовать substring, чтобы извлечь только дату:

 String thedatetime = "01-01-2012 01:01:01";
 String thedateonly = thedate.substring(0, 10);

Вы действительно должны прочитать javadoc для String, чтобы вы знали о доступных функциях.

Ответ 8

Если вы знаете заранее, это формат строки, я бы сделал это:

public String getDateOnly(String fullDate){
    String[] spl = fullDate.split(" ");
    return spl[0];
} 

Ответ 9

Вы можете сделать это либо с помощью API-интерфейсов для обработки строк:

String datetime =  "01-01-2012 01:01:01";
int spacePos = datetime.indexOf(" ");
if (spacePos > 0) {
   String date = datetime.substring(0, spacePos - 1);
}

или с использованием регулярного выражения:

Pattern p = Pattern.compile("(\\d{2}-\\d{2}-\\d{4})");
String datetime =  "01-01-2012 01:01:01";
Matcher m = p.matcher(datetime);
if(m.find()) {
   String date = m.group(1);
}

или используя SimpleDateFormat

DateFormat fmt = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
Date date = fmt.parse(datetime);
Calendar c = Calendar.getInstance();
c.setTime(date);
String date = c.getDayOfMonth() + "-" + c.getMonth() + "-" + c.getYear();

Ответ 10

Используйте String.substring(int, int). Если вас интересует значение даты и времени, используйте SimpleDateFormatter для синтаксического анализа вашей строки.

Ответ 11

myString.substring(0,10);

Если ваша строка всегда находится в этом формате (2 цифры, минус, 2 цифры, минус, 4 цифры, пробел и т.д.), вы можете использовать метод substring(int beginIndex, int endIndex) для строки, чтобы получить то, что вы хотите. Обратите внимание, что вторым параметром является индекс возвращаемой подстроки после.

Ответ 12

Если вы хотите взорвать полную дату из строки, используйте этот метод.

/**
 * @param dateTime format string
 * @param type type of return value : "date" or "time"
 * @return String value
 */

private String getFullDate(String dateTime, String type) {
    String[] array = dateTime.split(" ");
    if (type == "time") {
        System.out.println("getDate: TIME: " + array[1]);
        return array[1];

    } else if (type == "date") {
        System.out.println("getDate: DATE: " + array[0]);
        return array[0];
    } else {
        System.out.println("NULL.");
        return null;
    }
}

В противном случае, если вам нужна только дата взлома 01 -01-2012

используйте это:

/**
 * @param datetime format string
 * @return
 */
private String getOnlyDate(String datetime) {
    String array[] = datetime.split("-");
    System.out.println("getDate: DATE: " + array[0]);

    return array[0];

}

Надеюсь, мой ответ поможет вам.