电话号码标准化:任何预先
我有一个使用电话号码作为唯一标识符的系统。 出于这个原因,我想要格式化所有电话号码,因为它们使用规范化的格式。 因为我无法控制源数据,所以我需要自己解析这些数字并在将它们添加到我的数据库之前对其进行格式化。
我即将编写一个解析器,可以读取电话号码并输出标准化的电话格式,但在此之前,我想知道是否有人知道我可以用来格式化电话号码的任何预先存在的库。
如果没有预先存在的库,那么在创建此功能时应注意哪些内容可能不明显?
尽管我的系统目前只处理美国号码,但我打算试图包含对国际号码的支持以防万一,因为有可能需要这些号码。
编辑我忘了提及我正在使用C#.NET 2.0。
你可以使用Google的libphonenumber
。 这是一篇博文:
http://blog.appharbor.com/2012/02/03/net-phone-number-validation-with-google-libphonenumber
解析数字与安装NuGet包一样简单,然后执行此操作:
var util = PhoneNumberUtil.GetInstance();
var number = util.Parse("555-555-5555", "US");
然后你可以像这样格式化数字:
util.Format(number, PhoneNumberFormat.E164);
libphonenumber
支持E.164以外的几种格式。
我目前参与OpenMoko项目,该项目正在开发一个完全开源的手机(包括硬件)。 在规范化电话号码方面遇到了很多麻烦。 我不知道是否有人提出了一个很好的解决方案。 最大的问题似乎是与美国的电话号码,因为有时他们在前面有1,有时没有。 根据您存储在联系人列表中的内容,它可能正确显示来电显示信息,也可能不显示来电显示信息。 我建议剥离电话号码中的1(尽管我希望大多数人不会首先输入)。 您可能还需要在国际号码前查找加号或国家代码。
您可以检查OpenMoko网站,邮件列表和源代码控制,看看他们是否已经解决了这个错误。
perl和rails的例子
http://validates-as-phone.googlecode.com/svn/trunk/README
http://www.perlmonks.org/?node_id=159645
链接地址: http://www.djcxy.com/p/21325.html