我有一个包含两列的文件,一列用于全名(名字和姓氏),另一列用于ID号。该文件还有一个标题为" Name"和#34; ID",并且在标题的正下方以及所有条目的上方,有一行用空格分隔的破折号。它看起来像这样:
NAME ID
------ ------
John Snow 0001
Tyrion 0002
我希望能够跳过这一行破折号并且我一直试图使用Scanner.skip()
但无济于事。我已经在while循环中设置了一个正则表达式来分隔列之间的空格和if语句以绕过列标题。
答案 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
}
}