此Java Scanner示例中的正确分隔符是什么?

时间:2015-11-10 04:21:15

标签: java java.util.scanner

我有一个逗号分隔浮点数的文件和每行末尾的CR LF。为了测试,我使用如下所示的短字符串:

    Scanner s = new Scanner("0.1,0.2,0.3,\r\n0.4,0.5,0.6");

    s.useDelimiter(",|,\\r\\n");

    while(s.hasNext())
        System.out.println(s.next());

准确生成6个数字标记的正确分隔符是什么?上面显示的是一个令牌,包括一个空令牌:

    0.1
    0.2
    0.3

    0.4
    0.5
    0.6

2 个答案:

答案 0 :(得分:2)

,|,\\r\\n表示选项1为,。如果不匹配,请尝试,\\r\\n。这意味着第二个选项永远不会匹配,因为如果匹配以逗号开头,则选项1已经匹配。

而是尝试,\\r\\n|,,首先尝试匹配不仅仅包含逗号,\\r\\n的序列。如果不匹配,请尝试仅匹配逗号,

答案 1 :(得分:1)

最简单的解决方案可能是",\\s*"。这将处理逗号,后跟任意数量的空白字符作为分隔符。由于\\r\\n是空白字符,因此您的输入会很有效,而且您不必担心|带来的订单问题。看到,后,扫描程序将消耗尽可能多的空白字符。

这意味着该模式也会匹配原始模式没有的东西,例如多个连续的换行符,空格,制表符等。实际上,这可能是你想要的。如果没有,那么您可以使用Moishe的答案或匹配",(\\r\\n)?"的{​​{1}},然后消耗一个,序列(如果接下来的话)。