2008-11-03 16 views
13

我有一个使用电话号码作为唯一标识符的系统。出于这个原因,我想要格式化所有电话号码,因为它们使用规范化的格式。因为我无法控制源数据,所以我需要自己解析这些数字并在将它们添加到我的数据库之前对其进行格式化。电话号码标准化:任何预先存在的库?

我即将编写一个解析器,可以读取电话号码并输出标准化的电话格式,但在此之前我想知道是否有人知道我可以用来格式化电话号码的任何预先存在的库。

如果没有预先存在的库,那么在创建此功能时应注意哪些内容可能不明显?

尽管我的系统现在只处理美国的号码,但我打算试图包含对国际号码的支持以防万一,因为有可能需要它。

编辑我忘了提及我正在使用C#.NET 2.0。

+0

@丹,我想如果你告诉我们你正在使用的是哪种language_,你会得到更好的答案。 :-) – 2008-11-03 15:37:07

+0

我在这个问题中添加了C#2.0标签。 – 2008-11-03 15:42:30

回答

1

只是去掉任何非数字,可能使用正则表达式:[^\d]

,如果你要处理的扩展,区分一些没有区号,但有3位分机唯一的例外可能是,或如果你需要处理国际号码。

5

我目前参与OpenMoko项目,该项目正在开发完全开源的手机(包括硬件)。在规范化电话号码方面遇到了很多麻烦。我不知道是否有人提出了一个很好的解决方案。最大的问题似乎是与美国的电话号码,因为有时他们在前面有1,有时没有。根据您存储在联系人列表中的内容,它可能正确显示来电显示信息,也可能不显示来电显示信息。我建议剥离电话号码中的1(尽管我希望大多数人不会首先输入)。您可能还需要在国际号码前查找加号或国家代码。

你可以检查OpenMoko网站,邮件列表和源代码控制,看看他们是否已经解决了这个错误。

0

你需要的是所有国家代码的列表,并开始将你的字符串与国家代码列表中的前几个字符相匹配,以确保它是正确的,然后对于数字的其余部分,确保它的全部数字和适当长度,通常从5-10位数变化。

要实现对国家代码的检查,请安装使用网站www.geonames.orgNGeoNames nuget以获取所有国家代码的列表以用于与它们匹配。