首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较“移动号码”和/或国际格式

比较“移动号码”和/或国际格式
EN

Stack Overflow用户
提问于 2013-07-11 15:14:22
回答 3查看 2.4K关注 0票数 9

我正在接收来自移动设备的电话号码,格式随国际格式而异。

场景(ZA格式仅用于示例) :

数据库中的注册号码总是国际格式:+27827177982

我收到的数字可能有所不同,例如+27827177982 = 27827177982 = 0827177982 -数字的国际前缀是+27

如何将它与国际格式相匹配,即使我没有收到国际格式?

记住:

我不能只做一个区域的转换。

有没有一种简单的方法来比较所有地区的手机号码?

前缀在字符引用数量上的范围:电码

我的想法:

  • 比较最后9个字符的数字,这将排除区域前缀.但是,是否每个区域都只有‘9个字符不包括前缀’?
  • 循环遍历数据库,一次比较几次电话号码,例如检查最后9个号码--如果没有匹配--检查最后10个号码等等(但可能导致不必要的匹配)。

任何帮助都将非常感谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-11 15:18:55

您可能需要研究如何为此使用一个库。例如,谷歌的降钙素库有一个C# 港在此。特别是,这两种方法可能值得研究(强调我的方法)。

isNumberMatch -获得了关于两个数字是否可能相同的信心水平。 getExampleNumber/getExampleNumberByType -为所有国家/地区提供有效的示例号码,并可选择指定需要哪种类型的示例电话号码。

票数 9
EN

Stack Overflow用户

发布于 2013-07-11 15:19:07

在大多数国家(美国是一个明显的例外),非国际数字以0开头,因此解决方案如下:

  • 如果国家在一个例外名单上,特别处理它。
  • 否则
    • 如果第一个字符是0,请删除它并添加国际国家代码
    • 确保第一个字符是+

对此没有任何简单的答案,因为国际上没有规定电话号码是如何工作的。

票数 0
EN

Stack Overflow用户

发布于 2013-07-11 15:32:40

像这样的东西怎么样。这是我头上写的:

代码语言:javascript
复制
string sourcePhoneNumber = "....";
string phoneNumber = "....";

int baseRegionCountryCode = 44;

if (phoneNumber.StartsWith("0") && !phoneNumber.StartsWith("00"))
{
    phoneNumber = phoneNumber.SubString(0, 1);
    phoneNumber = String.Format("{0}{1}", baseRegionCountryCode, phoneNumber);
}
else if (phoneNumber.StartsWith("+"))
{
    phoneNumber = phoneNumber.Replace("+", "00");
}

if (sourcePhoneNumber == phoneNumber)
{
    // do something awesome....
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17597206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档