在文件中搜索字符串并返回该特定行

时间:2016-02-29 09:25:40

标签: java file search text line

我正在研究学生注册系统。我有一个带有studentname,studentnumber和学生成绩的文本文件,存储在每一行中,例如:

 name1,1234,7
 name2,2345,8
 name3,3456,3
 name4,4567,10
 name5,5678,6

如何搜索姓名然后返回整个句子?在寻找名称时,它不会得到任何匹配。

我当前的代码如下所示:

public static void retrieveUserInfo()
{
    System.out.println("Please enter username"); //Enter the username you want to look for
    String inputUsername = userInput.nextLine();


    final Scanner scanner = new Scanner("file.txt");
    while (scanner.hasNextLine()) {
       final String lineFromFile = scanner.nextLine();
       if(lineFromFile.contains(inputUsername)) { 
           // a match!
           System.out.println("I found " +inputUsername+ " in file " ); // this should return the whole line, so the name, student number and grade
           break;
       }
       else System.out.println("Nothing here");
    }

2 个答案:

答案 0 :(得分:1)

问题在于Scanner(String)构造函数:

  

public Sc​​anner(java.lang.String source)

     

构造一个新的扫描仪,生成从中扫描的值   指定字符串。

     

参数:source - 要扫描的字符串

它对文件一无所知,只是关于字符串。因此,此Scanner实例可以(通过nextLine()调用)为您提供的唯一一行是file.txt

简单的测试将是:

Scanner scanner = new Scanner("any test string");
assertEquals("any test string", scanner.nextLine());

您应该使用Scanner类的其他构造函数,例如:

Scanner(InputStream)
Scanner(File)
Scanner(Path)

答案 1 :(得分:0)

您已拥有包含整行的变量。只需打印出来就像这样:

while (scanner.hasNextLine()) {
       final String lineFromFile = scanner.nextLine();
       if(lineFromFile.contains(inputUsername)) { 
           // a match!
           System.out.println("I found " +lineFromFile+ " in file " ); 
           break;
       }
       else System.out.println("Nothing here");
    }