2011-08-23 143 views
-1

String.split( 「*」)在Android的Eclipse的回報異常String.split( 「*」)返回異常

有沒有什麼解決辦法...

+0

任何特定的異常? –

+0

PatternSyntaxException – Mak

+0

如果您有任何拋出的異常,應該在發生這種情況的地方發佈logcat和代碼塊。 – Egor

回答

8

String#split("*")應該拋出異常。 String#split接受正則表達式字符串,"*"是無效的正則表達式。 *的意思是「零個或多個以前的項目」,但沒有以前的項目。

如果您試圖按星號分割,請使用:split("\\*")。有兩個反斜槓,因爲你需要傳遞一個反斜槓到正則表達式分析器來告訴它*是字面的,當然這是一個字符串,所以要得到一個反斜槓,你必須轉義它。因此,兩個。

String[] splitOnAsterisk = "one*two*three".split("\\*"); 
+1

咦? 'String.split接受一個正則表達式字符串,而「*」是一個正則表達式。' –

+1

@The Elite:這裏有一個重要的遺漏詞:「invalid」:)我已經添加了它。 (也要感謝Christ Jester-Young,他也試圖用不同的方式解決它。) –

4

完全猜在這裏,但你嘗試過逃跑*?即String.split("\*")?還有你想分手?

+2

我想你會需要加倍反斜槓,否則Java會嘗試將它解釋爲字符串中的轉義字符,而不是作爲模式中的轉義。 –

+0

我想這個字符串包含*即「C:/ Abc * D:/ def」 – Mak

+0

這可能是正確的,因爲我認爲'String.split'接受一個String參數作爲正則表達式使用,所以'String。分裂(「*」)是告訴它分裂_everything_。 –

2

做到這一點,而不是

String[] s1 = s.split("\\*"); 
0

你想:

String.split("[*]") 

分割函數接受一個正則表達式