您在这里首页> 科技 >
使用 Google 的 libphonenumber 库解析和验证电话号码
技术作者:Sunny Srinidhi -2020 年 1 月 9 日0
在几乎所有有人类用户的项目或产品中,我们都与电话号码打交道。当产品面向全球用户群时,在数据库中维护有效的电话号码就变得非常困难。我们需要确保不同地区的电话号码长度适合其所在地区,添加或删除国家代码,以及进行大量此类验证。这可能很快就会成为一个独立的项目。
我们在一个项目中遇到了这样的问题。当我在研究寻找一种易于使用且轻量级的工具以便我可以外包其中涉及的智能时,我偶然发现了Google 的libphonenumber库。Google 拥有您需要的一切。因此,我没有再三考虑(这很糟糕),只是开始查看文档以了解如何将其集成到我的项目中以使我的生活更轻松。在这篇文章中,我将尝试帮助您理解这一点。
正如您所知,我的大部分项目都是用 Spring Boot 编写的,这个也不例外。我使用 Spring Boot 命令行运行器来编写这个 POC。一个很棒的事情是,这个 Google 库的 Java 客户端经过了高度优化,因此您也可以在 立陶宛手机号码列表 应用中使用它。它体积如此之小,响应如此之快。事实上,从 Android 4.0(Ice Cream Sandwich)开始的所有 Android 版本都已将此库嵌入到系统中。那么,让我们开始吧。
导入库
libphonenumber库位于 Maven 中央存储库中,因此将该库导入项目就像在pom文件中添加依赖项一样简单。只需在pom文件中添加以下依赖项即可完成:
代码
现在让我们进入有趣的部分。在此示例中,我们将取几个 验证电话号码 巴西和几个哥伦比亚的电话号码以及它们各自的国家短代码,并尝试找出以下信息:
这些电话号码在其所在地区有效吗?
他们有国家代码吗?如果有,是什么?
他们有全国号码吗?如果有,是什么?
将电话号码格式化为E164标准。
在开始之前,
我们先看看我们拥有的电话号码:
如您所见,我们拥有这两个国家/地区所有可能格式的电话号码,包括一些明显无效的电话号码。看看 shopify 电子邮件被归为垃圾邮件以及如何解决 图书馆对此有何看法会很有趣。接下来,我们需要巴西和哥伦比亚的短代码。让我们获取它们:很好。接下来,我们必须创建libphonenumber库中可用的电话号码实用程序的实例:
现在,我们可以开始试用这个库了。首先,我们将开始巴西电话号码列表和巴西的短代码。但在开始任何操作之前,我们必须创建库附带的 PhoneNumber 类的实例。我们执行的所有其他操作都将使用此 验证电话号码对象。因此,让我们先创建它:
这将在循环内调用,因此inputPhoneNumber变量将包含来自每个列表的电话号码,而shortCode变量将是我们正在运行测试的国家/地区的短代码。
为了更清楚起见,我有一个具有以下签名的方法:
我在循环内调用此函数,循环遍历电话号码列表,如下所示:
如您所见,它并不是 100% 准确,但大多数时候它都能正确识别。根据您的应用程序,您可以决定这种准确度是否足够。但当您处理电话号码时,该库确实很有用。
这个库还有很多功能。我鼓励您查看该库的 ao 列表 仓库(是的,它当然是开源的),并尝试自己弄清楚它是否能满足您的需求。
如果您有兴趣亲手尝试一个可以运行的现成项目,请前往我的 Github 仓库,您将从中获取我从中取出这些代码片段的项目,并且您可以直接运行它并获得输出。如果您发现这篇文章或我的任何其他文章有帮助,请考虑在下面的Patreon上支持我。