我有一个语法如下的文件:
! <Group>, Column1, column2, column3
Group, 10, 20, 30
Group, 11, 12, 13
...
! <AnotherGroup>, Column1, column2, column3, column4
AnotherGroup, 10, 20, 30, A
AnotherGroup, 11, 12, 13, B
...
当我尝试通过Scanner对象操作字符串时,会发生一些奇怪的事情,例如:
有时无法识别空格字符
sc = new Scanner(new File("files/myFile"));
while (sc.hasNextLine()) {
String tempLine = sc.nextLine();
if (tempLine.contains("!")) {
System.out.println(tempLine);
无论如何,我想我必须读取整个文件并以特定格式存储才能操作。
有任何建议吗?
在第一个回答后编辑: 这种情况有时候不会识别出字符“!” (请参阅代码段)
我的Sysout:
! <Group1>, Column1, column2, column3
! <Group2>, Column1, column2, column3
! <Group5>, Column1, column2, column3
没有读过第3组和第4组的行
答案 0 :(得分:0)
我不认为扫描仪存在问题。至少您提供的代码部分应该可以正常工作。 可以验证你是否犯了一些愚蠢的错误,或者等到一些大师来帮忙; - )
答案 1 :(得分:0)
我认为你误解了扫描仪的工作原理。 nextLine()使扫描程序跳过它正在查看的当前行的其余部分,并返回包含跳过的文本的String。它将扫描仪留在下一行的开头。
你没有解释你的奇怪事情何时发生的背景。当你说“找到文件结尾”是你正在发生的奇怪事情之一时,我会假设这种情况发生在接近结束时你会期望再处理一行。如果扫描程序正在查看文件中最后一行的开头,那么hasNextLine()将返回什么?您的while循环将在不处理文件内容的情况下完成。如果这不是您遇到的行为,则需要更好地解释。
如果您想使用扫描仪,请尝试查看this之类的内容。