从字符串中删除空格和特殊字符

Mik*_*ike 4 java regex string android replace

如何格式化字符串电话号码以删除特殊字符和空格?

该号码的格式如下(123)123 1111

我想让它看起来像这样:1231231111

到目前为止我有这个:

phone = phone.replaceAll("\\s","");
phone = phone.replaceAll("(","");
Run Code Online (Sandbox Code Playgroud)

第一行将删除空格.然后我无法删除括号.Android工作室强调"("并抛出错误unclosed group.

jca*_*ron 15

您可以删除除数字之外的所有内容:

phone = phone.replaceAll("[^0-9]","");
Run Code Online (Sandbox Code Playgroud)


Psh*_*emo 10

删除可以使用的所有非数字字符

replaceAll("\\D+",""); \\ \D is negation of \d (where \d represents digit) 
Run Code Online (Sandbox Code Playgroud)

如果你只想删除空格,(而且)你可以定义自己的字符类

replaceAll("[\\s()]+","");
Run Code Online (Sandbox Code Playgroud)

无论如何,你的问题是由正则表达式中的一些字符是特殊的事实引起的.其中(可以表示例如组的开始.同样)可以代表组的结尾.

要制作这样的特殊字符文字,您需要转义它们.你可以做很多事

  • "\\(" - 正则表达式中的标准转义
  • "[(]" - 使用字符类转义
  • "\\Q(\\E"- \Q\E创建引号 - 这意味着此区域中的正则表达式元字符应被视为简单文字
  • Pattern.quote("("))- 这个方法使用Pattern.LITERAL正则表达式编译器中的标志来指出正则表达式中使用的元字符是简单的文字,没有任何特殊含义