Java Scanner跳过一行破折号

时间:2012-04-20 09:32:04

标签: java regex java.util.scanner

我有一个包含两列的文件,一列用于全名(名字和姓氏),另一列用于ID号。该文件还有一个标题为" Name"和#34; ID",并且在标题的正下方以及所有条目的上方,有一行用空格分隔的破折号。它看起来像这样:

NAME        ID
------      ------
John Snow   0001
Tyrion      0002

我希望能够跳过这一行破折号并且我一直试图使用Scanner.skip()但无济于事。我已经在while循环中设置了一个正则表达式来分隔列之间的空格和if语句以绕过列标题。

4 个答案:

答案 0 :(得分:1)

您可以合理地使用BufferedReader代替扫描仪。它有一个readLine()方法,可以用它来跳过这些破折号。

BufferedReader reader = new BufferedReader(... your input here...);
String s;
while((s=reader.readLine())!=null) {
   if (s.startWith("--")
       continue;
   // do some stuffs

}

编辑: 如果你想确保这些行只包含破折号和空格,你可以使用:

s.matches("[\\- ]+")

仅当您的行包含短划线和空白

时才会匹配

答案 1 :(得分:0)

如果前两行始终是静态的,请尝试使用 -

reader.readLine(); //reads first line, Name ID and does nothing
reader.readLine(); //reads second line, ---- ---- and does nothing
//start scanning the data from now.
while(!EOF){
String line = reader.readLine();
//process the data.
}

通过这种方式,您可以消除使用“ - ”比较每一行的开销。

答案 2 :(得分:0)

FileReader fileReader = new FileReader(//File with Exension);

Scanner fileScan = new Scanner(fileReader);

fileScan.useDelimiter("\\-")

while(fileScan.hasNext()){

   //Store the contents without '-'
   fileScan.next();
}

希望这有帮助

答案 3 :(得分:0)

如果您已使用扫描仪,请尝试以下操作:

String curLine;

while (scan.hasNext()){
    curLine = scan.readLine();
    if(!curLine.startsWith("----") {
        .... //whatever code you have for lines that don't contain the dashes

    }
}