日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【编程开发】之国际号码校验工具 Libphonenumber

發布時間:2023/12/9 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【编程开发】之国际号码校验工具 Libphonenumber 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Libphonenumber 簡介


1、Libphonenumber 是什么

Libphonenumber 是谷歌公司開發的一款用于解析、格式化和校驗國際手機號碼的軟件庫,可用于 Java、C++ 和 JavaScript 中。

Libphonenumber 官方文檔地址為:https://github.com/google/libphonenumber

2、國家代號與電話區號

國家代號(CountryCode)

國家代號,即國際域名縮寫,是為了便于區分國家而使用的名稱,由兩個大寫字母組成,比如,中國的代號為 CN,美國為 US

電話區號(AreaCode)

國際電話區號,即國際電信聯盟根據 E.164 標準 分配給各國或特殊行政區的 代碼。所有的號碼都是前綴號,也就是說這些號碼是用來“撥到”目的國家或特殊行政區。每一個國家還有一個前綴來“撥出”所在國家,這個前綴叫 國際冠碼。比如,中國的國際電話區號為 86,美國的國際電話區號為 1

更多國家代號與電話區號可以參考我的另一篇博客:https://blog.csdn.net/aiwangtingyun/article/details/110940112


二、Libphonenumber 實戰 - Java


1、引入依賴

<dependency><groupId>com.googlecode.libphonenumber</groupId><artifactId>libphonenumber</artifactId><version>8.12.10</version> </dependency>

2、校驗號碼是否有效

下面我們以瑞士號碼校驗為例:

import com.google.i18n.phonenumbers.NumberParseException; import com.google.i18n.phonenumbers.PhoneNumberUtil; import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber; import org.junit.Test;@Test public void validatePhone() {// 校驗的號碼String swissNumberStr = "044 668 18 00";// 獲取 PhoneNumberUtil 實例PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();try {// 解析號碼PhoneNumber swissNumberProto = phoneUtil.parse(swissNumberStr, "CH");// 校驗號碼boolean isVaild = phoneUtil.isValidNumber(swissNumberProto); // return trueSystem.out.println("號碼校驗結果:" + isVaild); } catch (NumberParseException e) {System.err.println("號碼解析異常: " + e.toString());} }

號碼的校驗使用的是 PhoneNumberUtil 工具類,一般都是獲取該工具類的實例進行操作。校驗號碼前需要通過 號碼字符串 + 國家代號 來解析成國際通過的號碼,解析后生成 PhoneNumber 類的對象 swissNumberProto(PhoneNumber 是一個由 phonenumber.proto 生成的一個類) ,其包含如下數據:

{"country_code": 41,"national_number": 446681800 }

其中:

  • country_code 為國際電話區號;
  • national_number 為該號碼對應的國際號碼。

3、號碼格式化

我們還可以對解析后的號碼按不同標準進行格式化:

// 國際標準, 輸出 "+41 44 668 18 00" System.out.println(phoneUtil.format(swissNumberProto, PhoneNumberFormat.INTERNATIONAL)); // 國內標準, 輸出 "044 668 18 00" System.out.println(phoneUtil.format(swissNumberProto, PhoneNumberFormat.NATIONAL)); // E164標準, 輸出 "+41446681800" System.out.println(phoneUtil.format(swissNumberProto, PhoneNumberFormat.E164));

或者格式化成從其他國家打過來的格式:

// 格式化成從美國打過來的格式,輸出 "011 41 44 668 18 00" System.out.println(phoneUtil.formatOutOfCountryCallingNumber(swissNumberProto, "US"));

附錄:

如果想要獲取國際手機號碼例子,可以參考這個網站:https://fakenumber.net/,這個網站提供了各個國家的手機號碼生成例子。

總結

以上是生活随笔為你收集整理的【编程开发】之国际号码校验工具 Libphonenumber的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。