【问题标题】:Matching users with formatted and unformatted phone numbers (from contacts, internationally)将用户与格式化和未格式化的电话号码匹配(来自联系人,国际)
【发布时间】:2014-10-17 07:27:53
【问题描述】:

这就是我们所拥有的:

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

+ [countrycode] [phone number]

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

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

他可以用不同的数字格式(国内、国际、带+、不带+)保存他的联系人。我将以比利时号码为例说明我的观点:

+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 改成 + 就好了?
  • 任何不符合其他两个标准的数字,我...?我什至不知道。

也许可以获取世界上所有的数字格式,并使用非常长的 switch 语句将其转换为正确的国际格式?我怀疑这是正确的答案。

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

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

【问题讨论】:

  • 你是怎么解决这个问题的?
  • @kchoi 那是 6 年前的人:/ 很确定我们在下面使用了 libphonenumber,因为它是我标记为正确的,但我不能肯定地说。该项目早已不复存在,并且来自另一家公司。如果我愿意,我什至无法阅读代码。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-21
      • 2017-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-02
      相关资源
      最近更新 更多