2015-08-18 5 views
-5

У меня есть строка внизу. Мне нужно, чтобы дата была отдельной строкой.Получить подстроку из строки

String string = "Total payment is INR 7,000. Please pay a minimum amount of INR 320 by 03-JUL-15 to avoid charges." 

Ожидаемый результат: "03-JUL-15"

+0

Я предлагаю вам отредактировать свой вопрос, чтобы отформатировать строку в исходном коде (либо обратные ссылки, либо как отдельную строку с отступом 4 + пробелы), чтобы мы могли точно указать, где начинается и заканчивается ваша строка. – CommonsWare

+0

Является ли формат вашей строки всегда одинаковым? – digidude

+2

Спасибо за обмен. Какой у Вас вопрос? Вы только что указали требование и не приложили никаких усилий. Покажите свой код и объясните конкретную проблему. – tnw

ответ

0

Попробуйте это:

String string = "Total payment is INR 7,000. Please pay a minimum amount of INR 320 by 03-JUL-15 to avoid charges." 

String date = string.subString(string.lastIndexOf("by") + 3, string.lastIndexOf("to") - 1); 

Объяснение: String.substring (INT начало, внутр конец);

Это возвращает строку, содержащую данную подпоследовательность этой строки, которая приведет к нужной дате.

+0

Ну, теперь вы только что скопировали решение devlopp. Кроме того, ваше редактирование вопроса полностью недействительно. Вы изменили свою строку ввода. Поправки к грамматике/орфографии хороши, но НЕ МОГУТ модифицировать такие вещи. Это может быть буквально строка, с которой они работают, и вы можете получить даже недействительные ответы, сделав это. – tnw

0

Если «по» всегда является последним каналом до даты, а TT является цепью, следующей за датой.

String result = chaine.substring(chaine.lastIndexOf("by")+3, chaine.lastIndexOf("to")-1) 
+0

Это не работает. Это дает вам нужную строку и все после нее. – tnw

+0

мой insere отредактирован – devlopp

+0

Похоже, это должно сработать. Я удалил свой downvote, но я не буду выдвигать ни одного ... см. Мой комментарий к другому ответу Хусейна. – tnw

0

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

String string = "Total payment is INR 7,000. Please pay a minimum amount of INR 320 by 03-JUL-15 to avoid charges."; 
Pattern pattern = Pattern.compile("\\d{2}\\p{Punct}[A-Z]{3}\\p{Punct}\\d{2}"); 
Matcher matcher = pattern.matcher(mydata); 
if (matcher.find()) 
{ 
    System.out.println(matcher.group(1)); 
    // Found your string. 

} 

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

\p{Punct} Punctuation: One of !"#$%&'()*+,-./:;<=>[email protected][\]^_`{|}~ 
\d   A digit: [0-9] 
[A-Z]  Chars from A to Z uppercase 
{n}   Repeat 'n' times that pattern 

Reference.

Смежные вопросы