一、引入依賴包
<!-- Google 官方全球手機(jī)號(hào)解析庫(kù)(必加) -->
<dependency>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>libphonenumber</artifactId>
<version>8.13.47</version>
</dependency>
二、工具類
import com.google.i18n.phonenumbers.NumberParseException;
import com.google.i18n.phonenumbers.PhoneNumberUtil;
import com.google.i18n.phonenumbers.Phonenumber;
/**
* @author Alan Chen
* @description 全球手機(jī)號(hào)碼 - 自動(dòng)提取國(guó)家/地區(qū)碼(區(qū)號(hào))
* @date 2026/4/16
*/
public class GlobalPhoneCodeUtil {
private static final PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
public static String getGlobalCountryCode(String globalPhone) {
if (globalPhone == null || globalPhone.isBlank()) {
return null;
}
String original = globalPhone.trim();
try {
Phonenumber.PhoneNumber number;
// ============= 全球通用規(guī)則:最高優(yōu)先級(jí) =============
// 1. 以 + 開頭 → 完全交給 Google 庫(kù)自動(dòng)識(shí)別(全球所有國(guó)家都正確)
if (original.startsWith("+")) {
number = phoneUtil.parse(original, null);
}
// 2. 帶橫杠 -(如 853-xxxx)→ 按澳門解析,自動(dòng)提取區(qū)號(hào)
else if (original.contains("-")) {
number = phoneUtil.parse(original, "MO");
}
// 3. 11位純數(shù)字 → 中國(guó)大陸 86
else if (original.replaceAll("[^0-9]", "").length() == 11) {
number = phoneUtil.parse(original, "CN");
}
// 4. 8位純數(shù)字 → 澳門 853
else {
number = phoneUtil.parse(original, "MO");
}
return String.valueOf(number.getCountryCode());
} catch (NumberParseException e) {
return null;
}
}
// ====================== 測(cè)試 ======================
public static void main(String[] args) {
// 你原來的例子
System.out.println(getGlobalCountryCode("853-66202339")); // 853 ?
System.out.println(getGlobalCountryCode("13802838734")); // 86 ?
System.out.println(getGlobalCountryCode("66623689")); // 853 ?(澳門)
// 全球測(cè)試
System.out.println(getGlobalCountryCode("+85291234567")); // 852 ?(香港)
System.out.println(getGlobalCountryCode("+12125551234")); // 1 ?(美國(guó)/加拿大)
System.out.println(getGlobalCountryCode("+60123456789")); // 60 ?(馬來西亞)
System.out.println(getGlobalCountryCode("+919876543210")); // 91 ?(印度)
System.out.println(getGlobalCountryCode("+886912345678")); // 886 ?(臺(tái)灣)
System.out.println(getGlobalCountryCode("+6588888888")); // 65 ?(新加坡)
System.out.println(getGlobalCountryCode("+447911123456")); // 44 ?(英國(guó))
System.out.println(getGlobalCountryCode("+61412345678")); // 61 ?(澳大利亞)
}
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。