Java字符串按“|”分割

38

我正在尝试使用Java解析一些数据,这些数据由'|'序列分隔。以下是数据示例。

String s = "111206|00:00:00|2|64104|58041";
String [] temp = s.split("|");
for(String p: temp)
System.out.println(p);
但它并没有在“|”处拆分,而是将每个字符单独分开。这是我得到的上面代码的输出结果。
 1
 1
 1
 2
 0
 6
 |
 0
 0
 :
 0
 0
 :
 0
 0
 |
 2
 |
 6
 4
 1
 0
 4
 |
 5
 8
 0
 4
 1

我发现在这一行中将“|”替换为“,”可以实现转换,但是这段代码的修补程序需要运行很多次,因此我想要对其进行优化。

 String s = "111206|00:00:00|2|64104|58041";
 s = s.replace('|', ',');

我只想知道 '|' 的问题是什么?


这个回答解决了你的问题吗?使用split("|")按管道符拆分Java字符串 - user202729
1个回答

111

你必须使用:

String [] temp = s.split("\\|");
这是因为split方法需要一个正则表达式,而|是其中的特殊字符之一。它表示“或者”。这意味着你正在按''或''分割,也就是说,你正在按''分割每个字符之间。
你需要两个反斜杠,因为第一个用于转义字符串中实际的\,因为\是Java字符串中的转义字符。Java将该字符串解释为“\|”,然后正则表达式将其解释为“|”。

@jahroy FGITW :) - tckmn
完美、最好和最简单的方式。 - Vineet Singla
1
我看到这个问题晚了7分钟 ;-( 做得好GoldenDoorknob! - Code-Apprentice
这是一个意料之外的行为! - doctorram

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接