1

我有一个包含两列的文件,一列用于全名(名字和姓氏),另一列用于 ID 号。该文件还有一个带有“名称”和“ID”的标题,在标题下方和所有条目的上方,有一行由空格分隔的破折号。它看起来像这样:

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

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

4

4 回答 4

1

您可以使用 aBufferedReader而不是 Scanner。它有一个 readLine() 方法,可以用来跳过那些破折号。

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

}

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

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

仅当您的行包含破折号和空格时才会匹配

于 2012-04-20T09:40:22.390 回答
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.
}

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

于 2012-04-20T09:46:52.347 回答
0
FileReader fileReader = new FileReader(//File with Exension);

Scanner fileScan = new Scanner(fileReader);

fileScan.useDelimiter("\\-")

while(fileScan.hasNext()){

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

希望这可以帮助

于 2012-04-20T09:56:22.257 回答
0

如果您已经在使用 Scanner,请尝试以下操作:

String curLine;

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

    }
}
于 2012-07-01T10:26:14.143 回答