2017-03-15 169 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}"); 
相关问题