我正在开发一个应用程序,我需要将设备联系人列表的电话号码与数据库中的电话号码列表进行比较,但电话号码可以以不同的形式编写,如维基百科中所述:
Number structure for networks
Country Code - cc = 1 to 3 digits
Identification Code = x = 1 to 4 digits
Subscriber Number = maximum = 15 − (cc + x) = 8 to 11 digits
International public telecommunication number for networks (maximum 15 digits)
所以在巴西,电话号码可以这样写:
用户号码 99999-9999
识别码 + 用户号码 67 99999-9999
国家代码 + 识别码 + 用户号码 55 67 99999-9999 或 +55 67 99999-9999
而在其他国家,电话号码可以写成不同的形式,并且可以有不同的数字模式。
如何将设备中的数字与数据库中的数字(如Telegram和Whatsapp)进行比较?我是否必须创建一个代码来单独处理每个国家/地区?
我正在使用 Android 的 libphonenumber 和 Swift 的 libPhoneNumber-iOS,它们运行得很好。
要获取号码的区号,请使用如下getLengthOfGeographicalAreaCode
:
String nationalSignificantNumber = phoneUtil.getNationalSignificantNumber(number);
int nationalDestinationCodeLength = phoneUtil.getLengthOfNationalDestinationCode(number);
if (nationalDestinationCodeLength > 0) {
nationalDestinationCode = nationalSignificantNumber.substring(0, nationalDestinationCodeLength);
}
为了比较两个数字,我使用isNumberMatch
方法。它工作正常。