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

时间:2014-10-17 07:27:54

标签: algorithm internationalization formatting parse-platform phone-number

这就是我们所拥有的:

数据库中的用户,包括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存储数据,如果有任何帮助的话。

2 个答案:

答案 0 :(得分:2)

也许libphonenumber就是您要搜索的内容:https://code.google.com/p/libphonenumber/

答案 1 :(得分:0)

在保存数据之前,检查格式的正确方法。 Parse.com有一个名为“beforesave”的函数,您可以搜索和查找示例。那么你应该检查此时的格式。我不知道在云代码中检查的代码,但是我使用Lua作为示例,它具有预建函数以获取字符串字符长度或查找字符串中的特定字符。无论您是要在parse.com或您的设备上进行检查,都应该有一个可以检查字符串长度或特定字符的函数。