我有一个语法像这样的文件:
! <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);
无论如何,我认为我必须读取整个文件并将其存储为特定格式以便操作。
有什么建议吗?
第一次回答后编辑:这就是有时无法识别字符"!"的情况。(参见代码片段)
我的系统输出:
! <Group1>, Column1, column2, column3
! <Group2>, Column1, column2, column3
! <Group5>, Column1, column2, column3
没有读第3组和第4组的行
我认为扫描器没有问题。至少您提供的那部分代码可以正常工作。如果你犯了一些愚蠢的错误,可能会被验证,或者等待一些专家来帮助你;-)
我想你误解了扫描仪的工作原理。nextLine()使扫描器跳过它正在查看的当前行的其余部分,并返回一个包含被跳过的文本的String。它在下一行的开头离开扫描器。
你没有解释你的奇怪事情发生的背景。当您说"找到文件结尾"是正在发生的奇怪事情之一时,我将假设这发生在接近末尾时,此时您希望再处理一行。如果扫描器正在查看文件中最后一行的开头,hasNextLine()将返回什么?while循环将在不处理文件的某些内容的情况下完成。如果这不是你所经历的行为,你需要更好地解释。
如果您想使用扫描器,请尝试查看如下内容