2017-03-15 172 views
2

我有字符串(電話號碼)的陣列,並且我需要刪除+,這是在元件(數字)中的一個的前面,因爲它會引發NumberFormatException當我嘗試將它轉換爲int。Java - 如何刪除字符串數組中的特殊字符?

陣列中的元素是08888888880888123456+359886001122並且我已經使用了.split(" ")以將它們分開。我也試過,以便從最後一個刪除+.split(" +"),但這並沒有工作。

+0

'分裂(」 + 「)'不會工作,因爲'+'是需要被轉義特殊字符的正則表達式:'分裂(」 \\ + 「)' – shmosel

回答

9

你必須使用replaceAll,而不是split,例如:如果要分割每個可split(" ")喜歡這個號碼

0888888888 0888123456 359886001122 
//-------------------^------------ 

然後:

"0888888888 0888123456 +359886001122".replaceAll("\\+", ""); 

這會告訴你:

String numbers[] = "0888888888 0888123456 +359886001122".replaceAll("\\+", "").split(" "); 
System.out.println(Arrays.toString(numbers)); 

這會給你:

[0888888888, 0888123456, 359886001122] 

編輯

或者像@shmosel在評論說你CA使用replace("+", "")

+0

或者只是'代替(」 +」, 「」)' – shmosel

+2

@shmosel而不削減它引發錯誤'異常在線程 「主」 java.util.regex.PatternSyntaxException:懸空元字符 '+' 鄰近索引0' –

+2

['替換()']( https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replace(java.lang.CharSequence,%20java.lang.CharSequence))不使用正則表達式。 – shmosel

0

您可以

var lv_numbers = "0888888888 0888123456 +359886001122".replace('+',''); 
0

拆分更換使用正則表達式,所以你可以定義在分割匹配器中包含和可選的'+'。

String [] result = "0888888888 0888123456 +359886001122".split("\\s[\\+]{0,1}"); 
相關問題