Java 为联系人指定不同格式的相同号码

Java 为联系人指定不同格式的相同号码,java,Java,如何将不同格式的相同号码分配给一个联系人 在库存三星手机应用程序中 +1 8542569、8542569和18542569在呼叫时均分配给一个联系人:示例美国: 即使示例美国电话簿中只列出了+1 854-256-9: 这适用于每个国家,不仅仅是美国。以下是新西兰的一个例子: ^在这里,新西兰示例列出了91234567 而且,我可以拨打91234567、00 64 9-123 4567或6491234567,他们将被分配到新西兰示例联系人: 我的问题是:如何在Java中像三星股票应用程序一样为每

如何将不同格式的相同号码分配给一个联系人

在库存三星手机应用程序中

+1 8542569、8542569和18542569在呼叫时均分配给一个联系人:示例美国:

即使示例美国电话簿中只列出了+1 854-256-9:

这适用于每个国家,不仅仅是美国。以下是新西兰的一个例子:

^在这里,新西兰示例列出了91234567

而且,我可以拨打91234567、00 64 9-123 4567或6491234567,他们将被分配到新西兰示例联系人:

我的问题是:如何在Java中像三星股票应用程序一样为每个国家做同样的事情

假设我有3个字符串:91234567、00649-1234567和6491234567。 我的应用程序如何识别他们属于同一个联系人,并且他们基本上是同一个号码

我相信这是可以做到的,因为三星做到了:

同样,我希望代码适用于每个国家。

第1部分:删除起始零。它们是无用的。它们可能有用,但移除它们会更容易。

现在各国的电话号码中有不同的位数。比如,印度有10个,与新西兰和美国不匹配

假设在删除区域特定代码后,每个国家都有特定数量的数字

第2部分:您可以创建一个多维矩阵,后面有国家代码和位数。匹配起始国家代码,然后验证位数

这种方法可能与不同的国家有冲突,但我对这件事缺乏了解。 例如,冲突的原因:

Country A: country_code = +1, digits = 6
Country B: country_code = +12, digits =5

+1 234567
+12 34567

每个国家都有一个国际呼叫代码格式,这很可能是用来确定一个号码是否属于另一个国家的。我还敢打赌,对于我们来说,没有国际代码+1的隐式数字是根据SIM卡注册的地区来解释的。然而,如何做到这一点本身就是一个相当广泛的问题,因为它显然是可以做到的,但是有很多方法可以做到。你提出了什么特别的努力,你在哪里遇到了麻烦?@Makoto我试着探索正则表达式的可能性。但事实证明,这是一项非常困难的任务,因为必须为每个国家编写代码。我怀疑这是唯一的方法。获取区号和控制代码列表,然后执行if number+.startsWithcontrycode[I]{number=number.splitcontrycode[I][1]这可能是你需要知道的全部,也可能是你手机使用的库我不想说开始的零是无用的。电话号码不同于任何其他类型的号码,因为前导的零不知怎的被神奇地丢弃了。但是,这取决于国家、格式和其他因素,然后才是零。这取决于我个人根据我的经验,他们可能会制造更多的麻烦。我还没有看到任何0有用的情况,但我会编辑。