Java 从字符串中删除空格和特殊字符
如何格式化字符串电话号码以删除特殊字符和空格 数字的格式如下(123)123 1111 我试图让它看起来像这样:1231111 到目前为止,我有:Java 从字符串中删除空格和特殊字符,java,android,regex,string,replace,Java,Android,Regex,String,Replace,如何格式化字符串电话号码以删除特殊字符和空格 数字的格式如下(123)123 1111 我试图让它看起来像这样:1231111 到目前为止,我有: phone = phone.replaceAll("\\s",""); phone = phone.replaceAll("(",""); 第一行将删除空格。然后我在删除括号时遇到问题。Android studio在“(“下划线并抛出错误未关闭的组您需要转义(,因为它表示正则表达式中的元字符(组的开头)。与相同) 要删除所有非数字字符,可以使用 r
phone = phone.replaceAll("\\s","");
phone = phone.replaceAll("(","");
第一行将删除空格。然后我在删除括号时遇到问题。Android studio在
“(“
下划线并抛出错误未关闭的组
您需要转义(
,因为它表示正则表达式中的元字符(组的开头)。与相同)
要删除所有非数字字符,可以使用
replaceAll("\\D+",""); \\ \D is negation of \d (where \d represents digit)
如果只想删除空格,(
和)
您可以定义自己喜欢的空格
无论如何,您的问题是由于正则表达式中的一些字符是。其中有(
,它可以表示组的开始。类似地)
可以表示组的结束
要使这些特殊字符成为文字,您需要对它们进行转义。您可以通过多种方法来实现
-正则表达式中的标准转义“\\”(“
-使用字符类进行转义“[(]”
-“\\Q(\\E”
和\Q
创建引号-这意味着此区域中的正则表达式元字符应被视为简单文本\E
-此方法在正则表达式编译器中使用Pattern.quote(“”)
标志,指出正则表达式中使用的元字符是简单的文本,没有任何特殊意义Pattern.LITERAL
phone = phone.replaceAll("[^0-9]","");
请详细说明您的答案好吗?StackOverflow上不接受仅使用代码的答案。但它也会删除+,例如,如果我使用国家代码为+1(223)的电话号码223 12112它将向我显示122322312112这将是一个无效的!@Faakhir此答案基于OP要求,该要求规定
数字的格式如下(123)123 1111
所以它不包括代表国家代码的+XX
部分。但答案还包含描述如何只删除空格和括号的版本,所以它应该保留其他字符,如+
:replaceAll([\\s()]+“,”)
。选择符合您需要的版本。令人惊讶的是,大量其他详细的答案,其中许多根本不起作用,您简洁的答案成功了!谢谢!
replaceAll("[\\s()]+","");
phone = phone.replaceAll("[^0-9]","");
public static void main(String[] args){
// TODO code application logic here
String str = "(test)";
String replaced= str.replaceAll("\\(", "").replaceAll("\\)", "");
System.out.println(replaced);
}