从电话号码中删除区号

时间:2011-02-24 10:06:31

标签: c#

如何从telphonumber中删除coutrycode。

这个数字可以采用这种格式。

4770300000
004770300000
+4770300000
4670300000

我想删除国家代码,以便与数字匹配。

070300000

4 个答案:

答案 0 :(得分:2)

以下内容应以前导零替换任何有效的国家/地区代码(以“00”或“+”开头)。

resultString = Regex.Replace(subjectString, @"^(00|\+)(1|2[078]|2[1234569][0-9]|3[0123469]|3[578][0-9]|4[013456789]|42[0-9]|5[09][0-9]|5[12345678]|6[0123456]|6[789][0-9]|7|8[0578][0-9]|8[123469]|9[0123458]|9[679][0-9])", "0");

答案 1 :(得分:1)

您是否有预期国家/地区代码列表?如果是这样(假设这个例子你只是寻找47和46):

resultString = Regex.Replace(subjectString, @"(\+|\b00|\b)4[67]", "0");

会改变

4770300000 004770300000 +4770300000 4670300000

070300000 070300000 070300000 070300000

但是,它也会在省略国家代码和区号的电话号码上触发,如果它恰好以47或46开头。为防止这种情况,您可能想要添加一个前瞻断言来检查至少8个(或任何合理的)数字跟随推定的国家代码。

所以

resultString = Regex.Replace(subjectString, @"(\+|\b00|\b)4[67](?=\d{8})", "0");

会改变

4770300000 004770300000 +4770300000 460000

070300000 070300000 070300000 460000

如果您的输入字符串应该完全由电话号码组成(而不是嵌入在较长文本中的电话号码),那么您可能想要使用

resultString = Regex.Replace(subjectString, @"^(\+|00)4[67](?=\d{8})", "0");

代替。感谢迈克尔提出的建议!

答案 2 :(得分:1)

这很复杂。国家代码和国家号码的长度各不相同。此外,还有一些国家使用的区域代码,有些则没有。然后是可选的前导'+'或'00'。更不用说紧急号码了。

但;谷歌救援! This库解决了您的问题 - 除了很多其他电话号码杂耍。它被移植到所有主要语言。

E.g。以下是从数字中删除任何国家/地区代码的方法:

PhoneNumberUtil.GetInstance().Parse(phoneno, "").NationalNumber

答案 3 :(得分:0)

如果电话号码070300000有一个固定的长度你可以从整数中得到这个长度我的意思是f.e.最后9个数字