Разделение слов после последнего целого числа в большой строке

Я видел, что многие люди делают подобное, чтобы получить последнее слово строки:

 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

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