操纵文件中的字符串

时间:2011-07-06 16:04:20

标签: java string file

我有一个语法如下的文件:

! <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组的行

2 个答案:

答案 0 :(得分:0)

我不认为扫描仪存在问题。至少您提供的代码部分应该可以正常工作。 可以验证你是否犯了一些愚蠢的错误,或者等到一些大师来帮忙; - )

答案 1 :(得分:0)

我认为你误解了扫描仪的工作原理。 nextLine()使扫描程序跳过它正在查看的当前行的其余部分,并返回包含跳过的文本的String。它将扫描仪留在下一行的开头。

你没有解释你的奇怪事情何时发生的背景。当你说“找到文件结尾”是你正在发生的奇怪事情之一时,我会假设这种情况发生在接近结束时你会期望再处理一行。如果扫描程序正在查看文件中最后一行的开头,那么hasNextLine()将返回什么?您的while循环将在不处理文件内容的情况下完成。如果这不是您遇到的行为,则需要更好地解释。

如果您想使用扫描仪,请尝试查看this之类的内容。