Java:在多个文件中搜索一个单词

标签 java search arraylist indexof

基本上,我需要检查一个单词在多个文件中的出现情况。
此外,一个单词可能会多次出现在一个文本文件中。
我想为每个文件保存一个单词的位置;所以我写了下面的代码:

    public static void findWord(String word, File file){
        try{
             BufferedReader input = new BufferedReader(
                        new InputStreamReader(
                        new FileInputStream(file)));
            String line;
            ArrayList<Integer> list=new ArrayList<Integer>();
            while((line=input.readLine())!=null){
                if(line.indexOf(word)>-1){
                    list.add(line.indexOf(word));
                }
            }
           System.out.println(file +": "+ list);

            input.close();
        }
        catch(Exception ex){
            ex.printStackTrace();
        }
    }


我的代码在第一次成功出现后无法添加到列表。所以我在每个数组中只有一个元素。
我如何解决它?
P.S 我的文本文件由一行组成

最佳答案

修复方法如下(用此替换 while 循环):

while ((line = input.readLine ()) != null)
{
    int index = -1;
    while ((index = line.indexOf (word, index + 1) > -1)
    {
        list.add (index);
    }
}

关于Java:在多个文件中搜索一个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8855556/

相关文章:

python - 计算将数组中的值向上或向下舍入以最小影响平均值的点的算法

java - 检查 String[] 中的 String 是否在 ArrayList<string> 中

java - 如何使用单个方法迭代不同对象的 ArrayList?

java - 序列化内部类实例

python - Google Apps Engine 数据存储区搜索

java - 使用 Jenkins 进行自动化 Weblogic 服务测试

php - MySQL中如何在使用LIKE查询语句的同时使用OR语句

java - ArrayList语法错误

java - 将 Future 与 ExecutorService 结合使用

java - 是否可以按子字符串拆分而不删除它?