我有一个逗号分隔浮点数的文件和每行末尾的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
答案 0 :(得分:2)
,|,\\r\\n
表示选项1为,
。如果不匹配,请尝试,\\r\\n
。这意味着第二个选项永远不会匹配,因为如果匹配以逗号开头,则选项1已经匹配。
而是尝试,\\r\\n|,
,首先尝试匹配不仅仅包含逗号,\\r\\n
的序列。如果不匹配,请尝试仅匹配逗号,
。
答案 1 :(得分:1)
最简单的解决方案可能是",\\s*"
。这将处理逗号,后跟任意数量的空白字符作为分隔符。由于\\r
和\\n
是空白字符,因此您的输入会很有效,而且您不必担心|
带来的订单问题。看到,
后,扫描程序将消耗尽可能多的空白字符。
这意味着该模式也会匹配原始模式没有的东西,例如多个连续的换行符,空格,制表符等。实际上,这可能是你想要的。如果没有,那么您可以使用Moishe的答案或匹配",(\\r\\n)?"
的{{1}},然后消耗一个,
序列(如果接下来的话)。