【问题标题】:Multiple delimiters in Scanner class of JavaJava的Scanner类中的多个分隔符
【发布时间】:2011-02-04 13:04:20
【问题描述】:

如何使用Scanner 类的useDelimiter() 方法同时使用逗号(,) 和换行符(\n) 作为分隔符?

我正在解析 csv 文件中的一些文本。

【问题讨论】:

    标签: java delimiter java.util.scanner


    【解决方案1】:
     Scanner s = new Scanner("hello, world \n hello world");
     s.useDelimiter(",|\\n");
     while(s.hasNext()){
              System.out.println(s.next());
    
     }
    

    输出

    hello
     world 
     hello world
    

    【讨论】:

      【解决方案2】:

      useDelimiter(",|\\n");怎么样

      【讨论】:

      • 它转义了第二个\。正则表达式使用 \n 表示换行符,但 Java 也是如此,因此您编写 \\n 将其转换为正则表达式的 \n。
      • 想知道为什么 tomejuan 没有回应。也许是“转义”、“正则表达式”,或者关于第二个“\”的解释。
      【解决方案3】:

      useDelimiter 采用正则表达式模式,因此,它类似于",|\n"

      【讨论】:

        【解决方案4】:

        我的文本文件有如下条目:

        01-jan-2020,102
        02-jan-2020,103
        …
        

        要从每一行读取两个值,它使用以下内容,因为每一行末尾都有 \r\n 字符:

        Scanner.useDelimiter(",|\\r\\n")
        

        【讨论】:

          【解决方案5】:

          Jigar 是绝对正确的。 但如果不起作用,请尝试",|\\r"

          因为大多数文本文件都有 \r\n 而不仅仅是 \n

          【讨论】:

            【解决方案6】:

            对 Excel 文件使用扫描分隔符 - 不要忽视 RegEx 的事情。 在我的情况下,excel文件由'|'分隔。 我一直在花费大量时间使用scanner.useDelimiter(“|”)解析行,并逐个字符地返回。将其替换为scanner.useDelimiter("\\|") 解决了我的问题!

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-04-16
              • 2015-08-09
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多