Java String.replaceAll用于清理电话号码的方法

hyd*_*471 1 java string replaceall

我有一个名为TelephoneName的databasefield.在这个领域,我得到了不同格式的电话号码.

我现在需要的是将它们分成国家代码和用户号码.

例如,我看到了电话号码+49(0)711/61947-xx.

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

我怎么能用replaceAll方法做到这一点?

replaceAll("//()-","") 那是对的吗?

事情是我有很多未格式化的电话号码,如:+49 04261 85120 +32027400050使用相同的算法应用每个电话号码是不同的

aio*_*obe 7

replaceAll方法采用正则表达式作为参数.要删除除数字之外的所有内容+,您可以这样做

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

这是一个更完整的示例,它还计算出国家/地区代码(基于(符号的索引):

String str = "+49 (0)711 / 61947-12";

int lpar = str.indexOf('(');
String countryCode = str.substring(0, lpar).trim();
String subscriber  = str.substring(lpar).trim();

subscriber = subscriber.replaceAll("[^0-9]", "");

System.out.println(countryCode);  // prints +49
System.out.println(subscriber);   // prints 07116194712
Run Code Online (Sandbox Code Playgroud)

replaceAll("//()-","") 那是对的吗?

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