Java:在文本文件中搜索特定单词

时间:2018-04-04 03:00:40

标签: java

我目前有一个包含许多最受欢迎名字的大型文本文件。我让用户输入一个特定的名称,我正在尝试打印具有该名称的行。我的问题是,如果用户输入像Alex这样的名字,那么当我只想让Alex打印时,每个包含Alex的名字,如亚历山大,亚历克西斯,亚历克西亚都会被打印出来。我该怎么办" if(line.contains(name)){"解决这个问题。 该行包含信息,例如姓名,受欢迎程度排名以及具有该名称的人数

    try {
            line = reader.readLine(); 
            while (line != null) {
                if(line.contains(name)){
                    text += line;
                    line = reader.readLine();
                }
                line = reader.readLine();
            }
        }catch(Exception e){
            System.out.println("Error");
        }

        System.out.println(text);

3 个答案:

答案 0 :(得分:2)

您可以将{regex word boundary用于此任务:

final String regex = String.format("\\b%s\\b", name);

final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(line);
matcher.find();
if( matcher.group(0).length() > 0 ) {
    text += line;
    line = reader.readLine();
}

答案 1 :(得分:2)

简写就是使用Java8 Streams:看看:

public class Test2 {

    public static void main(String[] args) {
        String fileName = "c://lines.txt";
        String name = "nametosearch";

        try (Stream<String> stream = Files.lines(Paths.get(fileName))) {

            stream.filter(line -> line.contains(" " + name + " ")).forEach(System.out::println);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

答案 2 :(得分:1)

line.equals(name)

替换

line.contains(name)