我有一个数据库,其中包含数以百万计的免费格式的电话号码。即,UI不强制执行任何约束,并且用户正在键入他们想要的任何内容。
我正在寻找的是一种Java API,可以尽力将它们转换为一致的格式。理想情况下,API将采用自由文本值和国家/地区代码,并产生有效的国际电话号码或引发异常。
例如,系统中的电话号码可能类似于以下任何一项:
(555) 478-1123 555-478-1123 555.478.1123 5554781123
给定美国所在的国家/地区,API将为所有这些产生值“ +1(555)478-1123”。确切的格式无关紧要,只要它是一致的即可。
系统中也有不带区号的数字,例如“ 478-1123”。在那种情况下,我期望NoAreaCodeException或类似的东西。
也可能有诸如“ abc”之类的数据,该数据也应引发异常。
当然,我发布的示例有无数种变化,以及国际电话号码的巨大复杂性,它们具有相当复杂的验证规则。这就是为什么我不考虑自己动手做的原因。
有没有人看过这样的API?
您可以编写自己的代码(适用于美国电话#格式):
谷歌最近发布了libphonenumber,用于解析,格式化,存储和验证国际电话号码。