public static int keywordCount (String str, String substr) {
    int count = 0;
    int i = 0;
    while ((str.indexOf(substr, i)) != -1) {
          count++;
          i += substr.length();
    }
    System.out.println(count);

    return count;
}


这是我老师的一个示例循环示例。我确实需要一些解释才能理解,此循环如何工作?

提前致谢。

最佳答案

它使用String#indexOf(String, int)方法,该方法在Javadoc中定义为


  从指定的索引开始,返回指定子字符串首次出现在该字符串中的索引。 ...如果不存在这样的k值,则返回-1。


请注意,i是索引(因此i += substr.length();表示它将向前移动匹配长度)。当没有更多匹配项时,该方法将返回-1,从而结束循环。另外,我认为

while ((str.indexOf(substr, i)) != -1)


应该是

while ((i = str.indexOf(substr, i)) != -1)


那我相信逻辑是正确的。要么,

i = substr.length() + str.indexOf(substr, i);

关于java - 此循环计算字符串中子字符串出现的次数,如何?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25152325/

10-14 10:29