Разделение слов после последнего целого числа в большой строке
Я видел, что многие люди делают подобное, чтобы получить последнее слово строки:
String test = "This is a sentence";
String lastWord = test.substring(test.lastIndexOf(" ")+1);
Я хотел бы сделать то же самое, но получить последние несколько слов после последнего int, его нельзя жестко закодировать, поскольку число может быть любым, и количество слов после последнего int также может быть неограниченным. Мне интересно, есть ли простой способ сделать это, поскольку я хочу избежать повторного использования Patterns и Matchers из-за использования их ранее в этом методе для получения аналогичного эффекта.
Заранее спасибо.
2 ответа
Я хотел бы получить последние несколько слов после последнего int.... так как число может быть любым, и количество слов после последнего int также может быть неограниченным.
Вот возможное предложение. Использование Array#split
String str = "This is 1 and 2 and 3 some more words .... foo bar baz";
String[] parts = str.split("\\d+(?!.*\\d)\\s+");
И сейчас parts[1]
содержит все слова после последнего числа в строке.
some more words .... foo bar baz
Что насчет этого:
String test = "a string with a large number 1312398741 and some words";
String[] parts = test.split();
for (int i = 1; i < parts.length; i++)
{
try
{
Integer.parseInt(parts[i])
}
catch (Exception e)
{
// this part is not a number, so lets go on...
continue;
}
// when parsing succeeds, the number was reached and continue has
// not been called. Everything behind 'i' is what you are looking for
// DO YOUR STUFF with parts[i+1] to parts[parts.length] here
}