【问题标题】:How can I compare international phone numbers in Perl?如何在 Perl 中比较国际电话号码?
【发布时间】:2011-01-04 14:05:47
【问题描述】:

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

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

+44 (0)181 1234123
00441811234123
0181 1234123

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

【问题讨论】:

    标签: perl cpan phone-number


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 这看起来很有趣,可能有来自不同国家的相似数字,这会是个问题,不是吗?
      • 您(至少)有两个潜在问题:上下文(参见 hobbs 的回答)和格式。格式取决于数字有效的区域设置,再次参见霍布斯的回答。已经有一些特定于国家/地区的模块可供您用作起点。
      猜你喜欢
      • 1970-01-01
      • 2012-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-19
      • 1970-01-01
      相关资源
      最近更新 更多