Java中是否有可以计算单词总出现次数的默认方法?例如,在字符串“stack is stack”中发生了多少次堆栈。
编辑:请只有Java没有第三方库。
答案 0 :(得分:2)
您可以使用commons-lang中的StringUtils.countMatches(string, "stack")
。这不会考虑单词边界,因此“stackstack”将被计为两次出现。
答案 1 :(得分:1)
没有内置的.matchCount()
方法。这是我的意思。
public static int matchCount(String s, String find) {
String[] split = s.split(" ");
int count = 0;
for(int i=0; i<split.length; i++){
if(split[i].equals(find)){
count++;
}
}
return count;
}
String s = "stack is stack";
System.out.println(matchCount(s, "stack")); // 2
答案 2 :(得分:0)
您可以使用:
public static int NumTimesInString(String target, String regex)
{
return (" " + target + " ").split(regex).length - 1;
}
只要正则表达式与开始或结束空间不匹配,这将起作用...嗯,这可能对某些情况不起作用。你可能最好编写一个使用indexOf
的函数public static int NumTimesInString(String target, String substr)
{
int index = 0;
int count = -1;
while (index != -1)
{
index = target.indexOf(substr, index);
count++;
}
return count;
}
注意:未经测试
任何一个都可以用作:
int count = NumTimesInString("hello world hello foo bar hello", "hello");
// count is 3