перечислить все следующие слова совпадающего слова в java - PullRequest
1 голос
/ 07 августа 2020

Я использовал функцию ниже, чтобы напечатать следующее слово.

Но он печатает только первое совпадающее слово. Как напечатать все слова?

string example = "123: G Привет всем P: слово Я новичок в java: G помоги мне: N ab c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0: R 56 0 0: G Пожалуйста; строка matchWord = ": G";

public String nextWord(String str, String matchWord) {
    Pattern p = Pattern.compile(matchWord + "\\W+(\\w+)");
    Matcher m = p.matcher(str);
    return m.find() ? m.group(1) : null;
} 

Текущий вывод: Hi Expected Вывод: Привет, помогите, пожалуйста

1 Ответ

1 голос
/ 07 августа 2020

Вы близки. Вместо того, чтобы проверять m.find() только один раз с помощью тернарного оператора if, вы должны обернуть его в al oop. Примерно так:

Pattern p = Pattern.compile(matchWord + "\\W+(\\w+)");
Matcher m = p.matcher(str);
List<String> words = new ArrayList<>();
while(m.find()){
  words.add(m.group(1));
}
return words;

Попробуйте онлайн.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...