我有一个拥有数百万电话号码的数据库,可以免费格式化.即,UI不强制执行任何约束,并且用户正在输入他们想要的任何内容.
我正在寻找的是一个Java API,可以尽最大努力将这些转换为一致的格式.理想情况下,API将采用自由文本值和国家/地区代码并生成有效的国际电话号码或抛出异常.
例如,系统中的电话号码可能类似于以下任何一种:
(555) 478-1123
555-478-1123
555.478.1123
5554781123
Run Code Online (Sandbox Code Playgroud)
鉴于美国的国家,API将为所有这些产生价值"+1(555)478-1123".确切的格式无关紧要,只要它是一致的.
系统中还有数字没有区号,例如"478-1123".在这种情况下,我会期待NoAreaCodeException或类似的东西.
还可能存在诸如"abc"之类的数据,这些数据也应该抛出异常.
当然,我发布的例子有无数种变化,以及国际电话号码的巨大复杂性,它们具有相当复杂的验证规则.这就是为什么我不会考虑自己动手.
有没有人见过这样的API?
有没有什么办法可以使用正则表达式将字符串格式化为特定模式,或者是stringbuilder + substring更快的方法?
例如,输入电话号码 - > 1234567890
输出为 - >(123)456-7890
我看到这篇文章是可能的:http://www.4guysfromrolla.com/webtech/031302-1.shtml但是给出的解释是在ASP中.我怎么用Java做的???
我有一个未格式化的电话号码字符串("5551234567").我想在ui中格式化此字符串以用于显示目的.格式后,数字应如下所示:
(555)123-4567
叹.....
我试图找到一种考虑美国和国际电话号码的通用方法.我在JDK中遇到了MaskFormatter,但发现Javadoc中存在一个错误.这导致我在这里问我的问题.我希望有一个解决方案,我可以输入一个掩码,然后输入实际的字符串.对于国际/美国号码,输出将相应地格式化,或者如果指定了错误的字符数,则将显示一些默认字符来代替缺少的字符........