Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java String.replaceAll方法来清理电话号码_Java_String_Replaceall - Fatal编程技术网

Java String.replaceAll方法来清理电话号码

Java String.replaceAll方法来清理电话号码,java,string,replaceall,Java,String,Replaceall,我有一个叫做电话名的数据库字段。在这个领域,我得到了不同格式的电话号码 我现在需要的是将它们分为countrycode和subscribernumber 例如,我看到一个电话号码+49(0)711/61947 xx 我想删除所有的斜杠,括号,减号,空格。结果可能是+49(国家代码)和071161947**(子民编号) 我如何使用replaceAll方法实现这一点 replaceAll(“//()-”,“”)对吗 问题是我有很多未格式化的电话号码,例如: +49 04261 85120 +3202

我有一个叫做电话名的数据库字段。在这个领域,我得到了不同格式的电话号码

我现在需要的是将它们分为countrycode和subscribernumber

例如,我看到一个电话号码+49(0)711/61947 xx

我想删除所有的斜杠,括号,减号,空格。结果可能是+49(国家代码)和071161947**(子民编号)

我如何使用replaceAll方法实现这一点

replaceAll(“//()-”,“”)
对吗

问题是我有很多未格式化的电话号码,例如: +49 04261 85120 +32027400050
使用相同的算法应用每个电话号码是不同的,
replaceAll
方法使用正则表达式作为参数。要删除除数字和
+
之外的所有内容,您可以这样做

str = str.replaceAll("[^0-9+]", "")

下面是一个更完整的示例,它还可以计算出国家代码(基于
符号)的索引):


replaceAll(“//()-”,“”)
对吗


不完全是。这将删除所有
/-
子字符串。要删除这些字符,需要将它们放入
[…]
中,如下所示:
replaceAll(“[/()-]”,“”)
(并且
/
不需要转义)。

replaceAll()的第一个参数是一个正则表达式模式,因此您要做的是使其与所有非数字(和+)匹配。您可以使用“[^…]”(不是其中一个…)构造:

mystring.replaceAll("[^0-9+]", "")
不,那不行

ReplaceAll()

因此,您的表达式将用一个空格替换数字中看起来像
/()'
的所有实例

你需要像这样做

String output = "+49 (0)711 / 61947-xx".replaceAll("[//()-]","");

方括号使其成为正则表达式字符类(“斜杠或开括号或闭括号或hypen”),而不是文字(“斜杠后跟开括号,闭括号后跟hypen”)。

这可以通过使用:

s=s.replace("/","");
s=s.replace("(","");
s=s.replace(")","");

然后将其子串以获取国家代码。

如果您想要捕获国家代码和订户号码,您可能需要使用正则表达式。请注意,您可能需要首先获取国家代码,因为国家代码的长度不同。他还写了空格,所以不要忘记空格、制表符、新行、回车符、换页符、垂直制表符。。。我想你明白我的意思了;)我可能错了,但我想你需要java中的两个斜杠来转义斜杠字符?(所以这是对Java的转义,而不是对Regex的转义。)然后,如果你想在Regex中使用转义斜杠,你需要在字符串中使用四个斜杠
///
。我想你把它和反斜杠混在一起了。
s=s.replace("/","");
s=s.replace("(","");
s=s.replace(")","");