2014-10-04 34 views

回答

15

在正則表達式,|是用於alternation保留字符。你需要逃避它:

String out = string.split("\\|"); 

請注意,我們使用了兩個反斜槓。這是因爲第一個轉義了Java字符串中的第二個,所以傳遞給正則表達式引擎的字符串是\|

+2

謝謝!我以爲有人會用一個反斜槓逃脫它,但Android Studio告訴我這是一個非法的轉義字符,所以我認爲它不需要轉義。謝謝! – Yharoomanner 2014-10-04 11:50:06

+4

爲了澄清,這不是'''字符表示一個空字符串。它的意思是「或」。只是這意味着問題中的正則表達式轉換爲「空字符串或空字符串」。 – yshavit 2014-10-04 12:09:19

+0

@Yharoomanner請注意,雙反斜槓表示輸入字符串中的反斜槓字符。然後將它作爲字符串「\ |」傳遞給正則表達式解析器它代表一個垂直欄字符。 – 2014-10-05 03:36:32

1

我覺得這已經回答了Java split string to array

在答案彙總在上面的鏈接:

String[] array = values.split("\\|",-1); 

這是因爲:

此方法的工作方式類似於調用具有給定表達式的雙參數split方法和參數爲零的limit。尾隨的空字符串因此不包含在結果數組中。

1

split需要一個正則表達式,其中|是一個特殊字符。您需要使用反斜槓進行轉義。但反斜槓是Java字符串中的一個特殊字符,因此您也需要將其轉義。

myString.split("\\|")