使用命令行,我应该输入一个包含文本的文件名并搜索特定的单词。
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新手,请具体说明。
答案 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);
}
}
}
}
}