algorithm – 使用格式化和未格式化的电话号码匹配用户(来自国际联系人)

这就是我们所拥有的:

数据库中的用户,包括phone_number字段.当用户创建他们的帐户时,他们必须输入他们的电话号码.我们可以要求特定的格式,我们这样做:

+ [countrycode] [phone number]

用户选择国家代码并添加所需的数字.我们假设他当然正确地输入了它.

现在他在数据库中,我们正在尝试将其他用户与我们在其联系人中找到的号码进行匹配.这是我们遇到问题的地方:

他可以用不同的数字格式保存他的联系人(国家,国际,有,没有).我会以比利时的数字为例,让我的观点更加清晰:

+32 495 12 34 56 (international)
0032 495 12 34 56 (international)
0 495 12 34 56 (national)

我猜大多数用户都会用国家格式保存他们的联系人,这就是问题所在.

我们的应用程序需要具有国际格式,我们需要将数据库中的用户与联系人进行比较(这是我们“推广应用程序”计划的一部分),让用户选择是否可以邀请联系人.我们不想向那些没有应用程序的人展示(除其他外).

How can I know if the phone number is formatted internationnaly or nationally, and either way, how can I transform it to be international?

如果有,我可以假设它的格式正确,所以我没有问题.
如果没有,我该怎么办?我已经想到了这个,但我甚至不确定:

>以00开头的任何数字都是100%国际?而我只是改变00进入,我很好?
>任何不符合其他两个标准的数字,我……?我甚至不知道.

也许获得世界上的每种数字格式并使用令人难以置信的长切换语句来使用正确的国际格式进行转换?我怀疑这是正确的答案.

无论如何,任何线索/建议/解决方案显然是最受欢迎的!

注意:我正在使用Parse.com存储数据,如果有任何帮助的话.

最佳答案 也许你正在寻找libphonenumber:
https://code.google.com/p/libphonenumber/

点赞