如何格式化字符串电话号码以删除特殊字符和空格?
该号码的格式如下(123)123 1111
我想让它看起来像这样:1231231111
到目前为止,我有这个:
phone = phone.replaceAll("\\s","");
phone = phone.replaceAll("(","");
第一行将删除空格。然后我无法删除括号。 Android工作室强调"("
并抛出错误unclosed group
。
答案 0 :(得分:14)
您可以删除除数字之外的所有内容:
phone = phone.replaceAll("[^0-9]","");
答案 1 :(得分:10)
删除所有可以使用的非数字字符
replaceAll("\\D+",""); \\ \D is negation of \d (where \d represents digit)
如果您只想删除(
和)
空格,可以定义自己的character class
replaceAll("[\\s()]+","");
无论如何,你的问题是由于正则表达式中的某些字符是special这一事实引起的。其中有(
,例如可以表示group的开头。同样地,)
可以代表组的结尾。
要制作此类特殊字符文字,您需要将其转义。你可以做很多事情
"\\("
- 正则表达式中的标准转义"[(]"
- 使用字符类转义"\\Q(\\E"
- \Q
和\E
创建引号 - 这意味着此区域中的正则表达式字符应被视为简单文字Pattern.quote("("))
- 此方法在正则表达式编译器中使用Pattern.LITERAL
标志指出正则表达式中使用的元字符是简单文字,没有任何特殊含义答案 2 :(得分:3)
您需要转义(
,因为它表示正则表达式中的元字符(组的开头)。与)
相同。
phone = phone.replaceAll("\\(","");
答案 3 :(得分:0)
public static void main(String[] args){
// TODO code application logic here
String str = "(test)";
String replaced= str.replaceAll("\\(", "").replaceAll("\\)", "");
System.out.println(replaced);
}