1

是否有任何模块可以帮助我比较电话号码是否相等?

例如,以下三个号码是等价的(从英国拨打时)

+44 (0)181 1234123
00441811234123
0181 1234123

有没有 perl 模块可以告诉我这个?

4

2 回答 2

3

我在CPAN上看到的最接近的是Number::Phone,它是一个活跃的项目,支持英国电话号码。它应该适用于您给出的具体示例。支持少数国家。

如果您有其他国家/地区的电话号码,由于本地格式的特殊性,事情可能会变得更加困难。

于 2010-01-13T10:53:19.473 回答
2

假设您需要的代码不存在,而您必须自己编写,那么您需要进行两个基本操作:

  1. 应用上下文。这是您将拨号电话的位置考虑在内的地方。如果电话不是国际电话,您提供国家代码;如果呼叫不是长途电话,您可以提供区号等。当然,这需要每个区域设置一些规则。

  2. 标准化。删除无意义的空格和标点符号,将国际拨号前缀(NANPA 中的“011”,世界其他大部分地区的“00”,但偶尔会有很多奇怪的东西)转换为标准的“+”。

正确完成这两个步骤后,所有实际上是等效数字的输入都应该给出相同的输出字符串。

于 2010-01-13T12:46:24.333 回答