是否有任何模塊可以幫助我比較電話號碼的平等性?如何比較Perl中的國際電話號碼?
例如,(從英國撥打時)以下的三個數字是等同
+44 (0)181 1234123
00441811234123
0181 1234123
是否有一個Perl模塊,可以告訴我嗎?
是否有任何模塊可以幫助我比較電話號碼的平等性?如何比較Perl中的國際電話號碼?
例如,(從英國撥打時)以下的三個數字是等同
+44 (0)181 1234123
00441811234123
0181 1234123
是否有一個Perl模塊,可以告訴我嗎?
我在CPAN上看到的最接近的是Number::Phone這是一個活躍的項目,並支持英國電話號碼。它應該適用於您提供的具體示例。少數國家得到支持。
如果你有其他國家的電話號碼,由於本地格式化的特性,事情會變得更加困難。
假設你需要不存在,你必須自己編寫的代碼,有你需要做的兩種基本操作:
應用環境。這是您考慮撥號電話位置的地方。如果該呼叫不是國際的,則提供國家代碼;如果電話不是長途電話,那麼您需要提供區號等。當然,這要求每個區域設置一些規則。
標準化。刪除無意義的空格和標點符號,將國際撥號前綴(NANPA中的「011」,世界其他大部分地區的「00」,偶爾還有許多奇怪的東西)轉換爲標準的「+」。
正確完成這兩個步驟後,所有實際等效數字的輸入都應該給出相同的輸出字符串。
這看起來很有趣,可能會有類似的數字來自不同的國家,這將是一個問題,不是嗎? – imnotneo
您有(至少)兩個潛在問題:上下文(請參閱hobbs的答案)和格式。格式取決於數字有效的語言環境,請再次參閱hobbs的答案。已經有一些國家特定的模塊已經可以用作起點。 –