如何计算Java中文本文件中单词出现的次数?

时间:2015-07-28 00:43:42

标签: java file search text

所以我对Java很陌生,我正在研究一个应该读取用户输入的.txt文件的代码,然后要求用户在{{{{}}内搜索一个单词。 1}}文件。我无法弄清楚如何计算输入的单词出现在.txt文件中的次数。相反,我所拥有的代码只计算代码显示的行数。任何人都可以帮我弄清楚如何让我的程序计算单词显示的次数而不是单词显示的行数进来?谢谢!这是代码:

.txt

2 个答案:

答案 0 :(得分:0)

您的问题是,无论该单词是否存在,您都在递增每行的计数。此外,您没有代码可以计算每行多个匹配项。

相反,使用正则表达式搜索来查找匹配项,并为找到的每个匹配项增加计数:

//Search
int count = 0;
Pattern = Pattern.compile(wordInput, Pattern.LITERAL | Pattern.CASE_INSENSITIVE);
while(txt.hasNextLine()){
    Matcher m = pattern.matcher(txt.nextLine());

    // Loop through all matches
    while (m.find()) {
        count++;
    }
}

注意:不确定您使用的是什么,但如果您只需要这些功能,则可以将grepwc(wordcount)命令行实用程序结合使用。有关如何执行此操作,请参阅this SO Answer

答案 1 :(得分:0)

由于单词不必是独立单词,您可以执行一个有趣的for循环来计算单词在每行中出现的次数。

public static void main(String[] args) throws Exception {
    String wordToSearch = "the";
    String data = "the their father them therefore then";
    int count = 0;
    for (int index = data.indexOf(wordToSearch); 
             index != -1; 
             index = data.indexOf(wordToSearch, index + 1)) {
        count++;
    }

    System.out.println(count);
}

结果:

6

因此,代码的搜索段可能如下所示:

//Search
int count = 0;
while (txt.hasNextLine()) 
{
    String line = txt.nextLine();
    for (int index = line.indexOf(wordInput); 
             index != -1; 
             index = line.indexOf(wordInput, index + 1)) {
        count++;
    }        
}

System.out.println(count);