Java String Split by “|”

2022-09-01 08:02:45

我正在尝试使用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('|', ',');

我只想知道“|”有什么问题?


答案 1

您必须使用:

String [] temp = s.split("\\|");

这是因为该方法采用正则表达式,并且是特殊字符之一。它的意思是“或”。这意味着您正在拆分为 ,这只是 。因此,它将在每个字符之间拆分。split|'' or ''''

您需要两个斜杠,因为第一个斜杠用于转义字符串中的实际值,因为它是字符串中Java的转义字符。Java像“”一样理解字符串,然后正则表达式像“”一样理解它。\\\||


答案 2