【发布时间】:2013-07-01 12:50:31
【问题描述】:
我正在尝试从电话号码中删除 +1(国家/地区代码)(我正在进行标准化项目)。例如,用户有一个格式为 +1(703)-555-5787 的电话号码,他希望它是 (703)-555-5787(前面没有 +1)。
我的理论是我可以根据正则表达式模式搜索 phoneNum 字符串。一旦找到它,我就可以打印它或做任何我喜欢的事情。我的代码如下所示:
public static String normalizePrefix(final String phoneNum) {
String ret = phoneNum;
if (!phoneNum.contains("+1")) {
logger.log(Level.INFO, "input phone number doesn't contain country code (+1)");
}
else {
String regex = "(\\+1)([2-9][0-9][0-9])-([2-9][0-9]{2})-([0-9]{4})";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(phoneNum);
if (phoneNum.matches(regex)){
ret = m.group().substring(2, m.end());
}
}
logger.log(Level.INFO, phoneNum + "-->" + ret);
return ret;
}
我错过了什么?
【问题讨论】:
-
“我错过了什么?”我们不知道!你遇到什么问题?这怎么不完全有效?
-
问题是a)它返回与前面+1相同的字符串,b)它没有进入封闭的if语句。
标签: java regex normalization