2013-10-24 126 views
1

一個字符串我有一個字符串如下分裂Java中

String s = "3|4||5 9|4 0|0 4 8|..." 

,我想基礎上,"|"出現分裂它。因此,分割應返回

["3","4","5 9","4 0,"0 4 8",...] 

但是,在Java中,

s.split("|") = [, 3, |, 4, ...] 

換句話說,它是由""性格分裂,它似乎。哪裏不對?

+0

String.split()需要一個正則表達式,而不是一個普通的字符串。 – Stephan

回答

5

|字符在正則表達式中具有特殊含義,所以您必須使用反斜槓進行轉義。那麼你必須逃避Java自身的反斜槓。請嘗試:

s.split("\\|") 

Javadocs for the Pattern class有許多關於正則表達式中特殊字符的詳細信息。請參閱該頁面中的「邏輯運算符」部分,瞭解|的功能。

2

注意public String[] split(String regex)需要正則表達式

由於|是一個元字符,它工作時,你逃脫特殊字符

String[] results = result.split("\\|"); 

(個人建議這個)

String[] result = result.split(Pattern.quote("|"));

如果你用現在Pattern

|將被視爲正常字符|而不是正則表達式元char |

Oracle explained here why \\