Получить часть строки из полного текста

У меня есть строковая переменная, которая содержит текст вместе с некоторыми датами. Теперь я хотел бы получить дату из текста. Как я могу это сделать.

String a  = "I am ready at time -S 2019-06-16:00:00:00 and be there"

Теперь я хотел бы получить 2019-06-16:00:00:00 оттуда. Формат даты всегда будет в одном и том же формате, но мне нужно получить дату только из текста.

Регулярное выражение?
leopal 31.05.2019 09:12
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
87
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Попробуйте использовать сопоставитель регулярных выражений с шаблоном:

\d{4}-\d{2}-\d{2}:\d{2}:\d{2}:\d{2}

Образец кода:

String a = "I am ready at time -S 2019-06-16:00:00:00 and be there";
String pattern = "\\d{4}-\\d{2}-\\d{2}:\\d{2}:\\d{2}:\\d{2}";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(a);
while (m.find()) {
     System.out.println("found a timestamp: " + m.group(0));
}

Вы правы, я думал, что в вашем регулярном выражении есть скобки. Виноват.

Paul Lemarchand 31.05.2019 09:25

Спасибо. Еще кое-что. Строка a = "Я готов вовремя -S 2019-06-16:00:00:00 и -n03 быть там" В этой строке мне нужно получить значение -n. Это -n может быть в любом месте текста, как и решение даты. ТАКЖЕ формат значения -n может быть -n15 -- Без пробела после -n -n 15 -- Пробел после -n Мой текст может начинаться с -n или -n может быть в середине или в конце. Пожалуйста, помогите с регулярное выражение для того же

Souvik 31.05.2019 23:53
One more thing ... пожалуйста, не меняйте свой вопрос после того, как другие уже ответили.
Tim Biegeleisen 01.06.2019 01:38

Я просто прошу еще одну дополнительную информацию только. На этот вопрос есть ответ.

Souvik 03.06.2019 11:24

Я бы предложил использовать для этого регулярные выражения, например:

private static final Pattern p = Pattern.compile("(\d{4}-\d{2}-\d{2}:\d{2}:\d{2}:\d{2})");
public static void main(String[] args) {

    String a = "I am ready at time -S 2019-06-16:00:00:00 and be there"

    // create matcher for pattern p and given string
    Matcher m = p.matcher(a);

    // if an occurrence if a pattern was found in the given string...
    if (m.find()) {
        // ...then you can use group() methods.
        System.out.println(m.group(0));
    }
}

Вам нужно указать, какой сопоставитель ему нужно использовать.

Prasanth Ganesan 31.05.2019 09:19
String str = "I am ready at time -S 2019-06-16:00:00:00 and be there";
Pattern pattern = Pattern.compile("(?<date>\\d{4}-\\d{2}-\\d{2}):(?<time>\\d{2}:\\d{2}:\\d{2})");
Matcher matcher = pattern.matcher(str);

if (matcher.matches()) {
    System.out.println(matcher.group("date"));  // 2019-06-16
    System.out.println(matcher.group("time"));  // 00:00:00
}

Используйте регулярное выражение для извлечения даты из текста.

public static void main(String[] args) {
    String a = "I am ready at time -S 2019-06-16:00:00:00 and be there";
    Pattern pattern = Pattern.compile("[0-9]{4}[-][0-9]{1,2}[-][0-9]{1,2}[:][0-9]{1,2}[:][0-9]{1,2}[:][0-9]{1,2}");
    Matcher matcher = pattern.matcher(a);
    while(matcher.find()){
        System.out.println(matcher.group());
    }
}

Этот текст может содержать и другие числовые значения. Фактическая строка будет выглядеть так: «Я готов вовремя -S 2019-06-16:00:00:00 и буду там -k 2 Heldlo -a02 Готово»; Теперь этот параметр может быть в разных местах текста и мне нужно исправить значение -d -k -a

Souvik 31.05.2019 09:33

Другие вопросы по теме

Похожие вопросы