我的电话号码如(123)456-7890。我使用replaceAll
方法从字符串中删除()
和-
以及空格。我试过跟着
String phNo= "(123) 456-7890".replaceAll("[()-\\s]").trim();
但它不起作用。任何解决方案?
答案 0 :(得分:12)
这应该有效:
String phNo = "(123) 456-7890".replaceAll("[()\\s-]+", "");
在你的正则表达式中:
\s
应为\\s
\\-
+
中的量词[()\\s-]+
,通过最小化替换次数来提高效率答案 1 :(得分:5)
如果您需要电话号码,请使用:
String phNo = "(123) 456-7890".replaceAll("\\D+", "");
此正则表达式将标记所有不是数字的字符,并将其替换为空字符串。
正则表达式:\D+
\D
+
答案 2 :(得分:3)
带括号-
的{{1}}字符表示字符范围,例如[]
。但是,字符范围在此处不起作用,您希望使用文字[a-z]
。逃避它。
-
答案 3 :(得分:3)
String newStr = phoneNumber.replaceAll("[^0-9]", "");
System.out.println(newStr);
删除所有非数字字符。
答案 4 :(得分:2)
这有两个主要原因不能按预期工作。
在字符类中,连字符具有特殊含义。您可以将连字符作为类的第一个或最后一个字符。在某些正则表达式实现中,您也可以直接放在范围之后。如果你将连字符放在任何其他地方,你需要将它转义为你的类。
String phNo = "(123) 456-7890".replaceAll("[()\\-\\s]").trim();
^^
您没有提供任何答案都未指明的替代值。
String phNo = "(123) 456-7890".replaceAll("[()\\-\\s]", "").trim();
^^
最后,您也可以在这里删除.trim()
。
String phNo = "(123) 456-7890".replaceAll("[()\\-\\s]", "");
答案 5 :(得分:0)
如果您使用的是Kotlin,那么
mobileNo.replace(Regex("[()\\-\\s]"), "")