C# 从电话号码中删除区号

C# 从电话号码中删除区号,c#,C#,如何从TelphonNumber中删除coutrycode 数字可以是这种格式 4770300000 004770300000 +4770300000 4670300000 我想删除国家代码,以便能够匹配数字 070300000 您是否有预期国家代码的列表?如果是这样(假设本例中您只查找47和46): 会改变 4770300000 004770300000 +4770300000 4670300000 4770300000 004770300000 +4770300000 460000

如何从TelphonNumber中删除coutrycode

数字可以是这种格式

4770300000
004770300000
+4770300000
4670300000
我想删除国家代码,以便能够匹配数字

070300000

您是否有预期国家代码的列表?如果是这样(假设本例中您只查找47和46):

会改变

4770300000 004770300000 +4770300000 4670300000
4770300000 004770300000 +4770300000 460000
进入

然而,如果电话号码的起始号码是47或46,那么在省略了国家代码和区号的情况下,它也会触发。为了防止出现这种情况,您可能需要添加一个前瞻性断言,以检查假定的国家代码后面是否有至少8位(或任何合理的数字)

所以

会改变

4770300000 004770300000 +4770300000 4670300000
4770300000 004770300000 +4770300000 460000
进入

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

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

相反。谢谢迈克尔的建议

如果电话号码070300000的长度是固定的,您可以从整个号码中只得到这个长度,我的意思是f.e.最后9个号码

以下内容应将任何有效的国家代码(以“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");

这很复杂。国家代码和国家编号的长度各不相同。此外,有些国家使用地区代码,有些国家不使用。然后是可选的前导“+”或“00”。更不用说紧急电话了

但是;谷歌救援!图书馆解决了你的问题-除了许多其他的电话号码杂耍。它被移植到所有主要语言

例如,以下是如何从数字中去除任何国家代码:

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

您申请的国家代码规则是什么?据我所知,国家代码可以是1-3个数字。你知道本地电话号码应该有多长吗?前面是否总是有国家代码?这些是来自所有国家还是有限的国家名单…?@Oded它甚至更复杂@Stofke-这就是我要求澄清的原因。它总是一个国家吗?几个?所有这些?我可能会走另一条路——获取最后8个字符,并在前面加上0。@Oded:好主意,如果电话号码的长度总是相同的话。在许多国家,情况并非如此。这是一个假设(仅限一个国家),尽管OP没有提供足够的信息来确定这种或那种方式。您确实非常希望将这些正则表达式锚定在字符串的开头。46是瑞典,你有两位数或三位数的区号。不过,我不知道有三位数代码的地区的本地电话号码是否更短。是的,请提供更多信息:)请注意,有些国家不使用零来表示区号。例如,挪威没有区号的概念,在北美,使用“1”而不是“0”。首先。
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");
PhoneNumberUtil.GetInstance().Parse(phoneno, "").NationalNumber