Android 正确处理电话号码(存储,最好使用唯一的形式)
这个问题不是针对Android的,但我已经包括了标签 我需要能够以某种标准形式(理想情况下是字符串)存储电话号码,这样可以快速测试/评估平等性(因此字符串将是理想的) 我已经找到了一些答案,最好的答案指向了我(我可以使用图书馆来为我做) 但这还不够好,我尝试了各种格式编号,了解了Editable factory以使用该类中的一些静态方法,但它们似乎没有返回我所期望的表单 我期望类似电话号码散列的东西,表示相同号码的两个输入将在这个“标准形式”中产生相同的结果,一个可以拨打这个标准形式就可以了。我认为所有各种+s和诸如此类的东西对于这个标准表单来说都是短手 我不确定现在是否存在这样的事情 我知道有些东西的意思是“当前区域”(或国家),这就是为什么陆路线路可以使用ommit区号的原因,我希望有一个函数可以返回当前位置的格式(但这不适用于手机,例如,如果是陆路线路来预加区号,这将(更接近)标准表单)我一直假设(存在) 我很确定电话号码的完整形式是存在的,想想电话系统是如何工作的(我推断我承认),应该有一种形式可以在整个地球上唯一地识别一个号码,如果不是这样的话(比如从没有区号的陆地线路拨打的本地电话),这就是一种优化 所以我有两个问题: 如何将电话号码“扩展”为该号码的唯一字符串,以使任何其他形式的书写该号码(使用空格、0或+44…)都“扩展”到该唯一号码 是否有任何ISO(/IEC?)(O代表什么?)标准文件的草稿向公众开放?我读过维基百科页面(很久以前,我花了这么多时间浏览维基百科,打开了数百个标签),但它涵盖了历史,或一些关于格式的信息),我想知道更多关于我认为8年来理所当然的事情 另外,为什么WindowsPhone8是一个标签?让12位自豪的Lumina车主不觉得被冷落?(建议将其作为标签!) 附录 不幸的是,这里没有解决方案(包括libphonenumber),我想找出答案的努力导致了一些有趣的阅读: 我仍然不能断定数字是否有“完整形式”Android 正确处理电话号码(存储,最好使用唯一的形式),android,phone-number,Android,Phone Number,这个问题不是针对Android的,但我已经包括了标签 我需要能够以某种标准形式(理想情况下是字符串)存储电话号码,这样可以快速测试/评估平等性(因此字符串将是理想的) 我已经找到了一些答案,最好的答案指向了我(我可以使用图书馆来为我做) 但这还不够好,我尝试了各种格式编号,了解了Editable factory以使用该类中的一些静态方法,但它们似乎没有返回我所期望的表单 我期望类似电话号码散列的东西,表示相同号码的两个输入将在这个“标准形式”中产生相同的结果,一个可以拨打这个标准形式就可以了。我
我不敢创建一个简单地用+44替换0之类的解决方案。读了你的问题后,我想起了谷歌的库,名为。它是谷歌的通用库,用于解析、格式化、存储和验证国际电话号码。它可以做以下事情(其中一些似乎是您可以使用的):
- 分析/格式化/验证所有国家/地区的电话号码 世界的一部分李>
- getNumberType-获取基于 数字本身;能够区分固定电话、移动电话、免费电话、, 保费、共享成本、VoIP和个人号码(无论何时) 可行)李>
- isNumberMatch-获取两个 数字可能是相同的李>
- isPossibleNumber-快速猜测一个数字是否可能 phonenumber只使用长度信息,比 完全验证李>
- isValidNumber-电话号码的完整验证 用于使用长度和前缀信息的区域李>
- AsYouTypeFormatter-当用户输入每个数字时,动态格式化电话号码李>
- 电话号码OFFINEGEOCODER-提供与电话号码相关的地理信息
+
的统计数据,后跟国家代码、区号和号码)
使用上述库,如果您在提及电话号码时同时提及国际代码,则可以检查所有电话号码的有效性(例如1
,适用于美国和加拿大)。如果您没有代码,但知道要检查号码的国家名称,那么您也可以验证。您还可以使用此库转换1标准E.164
格式的所有有效数字。您还可以“扩展”该特定国家的本地国家格式的数字。您也可以将其另存为字符串。尽管它确实使用了您在问题中提到的PhoneNumberUtils
我不确定这是否是您想要的,但我希望这些信息对您有所帮助。不幸的是,“自4.0(冰激凌三明治)以来被Android框架使用”,我应该在问题中添加一个链接,谢谢您的尝试。