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/