【发布时间】:2016-08-28 19:14:08
【问题描述】:
如何将不同格式的相同号码分配给一个联系人?
在股票三星手机应用程序中,
+1 8542569、8542569 和 18542569 在呼叫时均分配给一个联系人:“示例美国”:
即使“Example USA”的电话簿中只列出了 +1 854-256-9:
这适用于每个国家,而不仅仅是美国。这是一个新西兰的例子:
^ 此处,“新西兰示例”列出了 91234567。
而且,我可以致电 91234567、00 64 9-123 4567 或 6491234567,他们都会被分配到“新西兰示例”联系人:
我的问题是:如何在 Java 中为每个国家/地区做同样的事情,就像三星股票应用程序一样?
假设我有 3 个字符串:91234567、00 64 9-123 4567 和 6491234567。 我的应用如何识别他们属于同一个联系人并且他们基本上是同一个号码?
我确信它可以做到,因为三星做到了:)
再次,我希望代码适用于每个国家/地区。
【问题讨论】:
-
每个国家/地区都有一种国际电话代码格式,这非常很可能在这里用于确定号码是否属于另一个国家/地区。我还敢打赌,没有国际代码(美国为 +1)的隐式数字是根据 SIM 卡注册的区域设置来解释的。但是,“如何做”本身就是一个相当广泛的问题,因为它非常显然可以做到,但是有很多方法可以做到。您提出了哪些特别的努力,您在哪里遇到了麻烦?
-
@Makoto 我已经尝试探索
regex的可能性。但事实证明,这是一项非常艰巨的任务,因为必须为每个国家/地区编写代码。 -
我怀疑这是唯一的方法。
-
获取区号和国家代码的列表并执行
if ( (number+"").startsWith(contrycode[i])){ number = number.split(contrycode[i])[1] -
github.com/googlei18n/libphonenumber 可能是您需要知道的全部内容(并且可能就是您的手机使用的库)
标签: java