首页 > 解决方案 > 列出java中匹配单词的所有下一个单词

问题描述

我已经使用下面的函数来打印下一个单词。

但它只打印第一个匹配的单词,如何打印所有单词?

字符串示例 = " 123 :G 大家好 P: 我是 java 新手 :G 帮帮我 :N abc 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;
} 

当前输出:嗨预期输出:嗨,请帮助

标签: javastringarraylist

解决方案


你很近。您应该将它包装到一个循环中,而不是只使用三元 if 语句检查m.find()一次。像这样的东西:

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;

在线尝试。


推荐阅读