2016-12-19 26 views
0

我正在開發一個應用程序,我需要將設備聯繫人列表的電話號碼與數據庫中的電話號碼列表進行比較,但電話號碼可以用不同的格式像它在Wikipedia定律描述:比較電話號碼從設備到數據庫列表

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

識別碼+訂閱人數IBER數67 99999-9999

國家代碼+識別代碼+用戶號碼55 67 99999-9999或 +55 67 99999-9999

和其他國家的電話號碼可以在不同的寫表格,並可以有不同的數字模式。

如何將設備中的數字與數據庫中的數字進行比較,如電報和WhatsApp?我是否必須創建一個代碼來分別處理每個國家?

+0

看看https://github.com/googlei18n/libphonenumber –

+0

我看了一下它並沒有解決關於識別碼的問題。 – GuiDupas

+0

謝謝НикитаХлебушкин。它幫助了很多。 – GuiDupas

回答

0

我使用的是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方法。它工作正常。