在文件中找到一个单词并在Java中打印包含该单词的行

时间:2019-03-18 03:54:47

标签: java

使用命令行,我应该输入一个包含文本的文件名并搜索特定的单词。

  

foobar file.txt

我开始编写以下代码:

import java.util.*;
import java.io.*;

class Find {
    public static void main (String [] args) throws FileNotFoundException {
        String word = args[0];
        Scanner input = new Scanner (new File (args[1]) );
        while (input.hasNext()) {
            String x = input.nextLine();    
        }
    }
}

我的程序应该找到单词,然后打印包含单词的整行。 由于我是Java新手,请具体说明。

2 个答案:

答案 0 :(得分:1)

您已经在读取文件的每一行,因此使用String.contains()方法将是您的最佳解决方案

if (x.contains(word) ...

如果给定的contains()包含您传递给它的字符序列(或字符串),则true方法仅返回String

注意:此检查 区分大小写,因此,如果要检查单词是否存在大写字母,只需先将字符串转换为相同的大小写:

if (x.toLowerCase().contains(word.toLowerCase())) ...

现在这是一个完整的示例:

public static void main(String[] args) throws FileNotFoundException {

    String word = args[0];

    Scanner input = new Scanner(new File(args[1]));

    // Let's loop through each line of the file
    while (input.hasNext()) {
        String line = input.nextLine();

        // Now, check if this line contains our keyword. If it does, print the line
        if (line.contains(word)) {
            System.out.println(line);
        }
    }
}

答案 1 :(得分:0)

首先,您必须打开文件,然后逐行读取文件,并检查单词是否在该行中。参见下面的代码。

class Find {
    public static void main (String [] args) throws FileNotFoundException {
          String word = args[0]; // the word you want to find
          try (BufferedReader br = new BufferedReader(new FileReader("foobar.txt"))) { // open file foobar.txt
          String line;
          while ((line = br.readLine()) != null) { //read file line by line in a loop
             if(line.contains(word)) { // check if line contain that word then prints the line
                  System.out.println(line);
              } 
          }
       }
    }
}