2013-05-01 48 views
5

我想解析一些數據,使用由'|'分隔的Java序列。以下是數據的一個例子。Java String按「|」分割

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('|', ','); 

我只是想知道'|'是什麼問題, ??

回答

11

您必須使用:

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

這是因爲split方法接受一個正則表達式,|是特殊的人物之一。它的意思是'或'。這意味着你正在分裂'' or '',這只是''。因此它會在每個角色之間分裂。

你需要兩條斜線,因爲第一個是在逃逸實際\,因爲\是一個字符串Java的轉義字符。 Java理解像「\|」這樣的字符串,然後正則表達式就會像「|」那樣理解它。

+1

最簡單的代表點evar! – jahroy 2013-05-01 01:55:29

+0

@jahroy [FGITW](http://meta.stackexchange.com/questions/9731/fastest-gun-in-the-west-problem):) – Doorknob 2013-05-01 01:56:12

+0

完美,最好,最簡單的方法。 – 2013-05-01 01:58:15