用于计算单词的Java函数

时间:2010-12-24 16:42:05

标签: java data-structures

Java中是否有可以计算单词总出现次数的默认方法?例如,在字符串“stack is stack”中发生了多少次堆栈。

编辑:请只有Java没有第三方库。

3 个答案:

答案 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