2012-03-04 33 views
2

在電話號碼格式有問題的情況下,匹配電話號碼的最佳方法是什麼?在Android SDK中匹配兩種格式的電話號碼的最佳方式是什麼?

我正在尋找一個標準豐富的最佳實踐方式。我有用戶輸入電話號碼並保存到SQLite數據庫。稍後的某個時間點,當有電話打到時,我會通過ITelephony獲取incomingNumber。我必須將db中的值與incomingNumber進行匹配並採取行動。這些數字的格式可能差別很大,可能會導致問題。

爲了解決這個問題,我現在正在使用正則表達式來消除格式化字符,並只留下數字以獲得適當的匹配。這工作正常,但我想知道是否有人有更好的方式來做到這一點,或者如果Android有一個API方法來匹配兩個電話號碼。

感謝您的關注

編輯:我使用的代碼是:

private boolean matchPhoneNumbers(String numberA, String numberB) 
    {   
     //Remove everything that's not a number 
     numberA=numberA.replaceAll("[^0-9]", ""); 
     numberB=numberB.replaceAll("[^0-9]", ""); 
     //Get the minimum length of one of the strings 
     int length=Math.min(numberA.length(),numberB.length()); 
     numberA=numberA.substring((numberA.length()-length)); 
     numberB=numberB.substring((numberB.length()-length)); 
     //check the difference 
     return numberA.equals(numberB); 
    } 

回答

2

去了每一個字符,擺脫任何字符小於0或大於9的(簡單的while循環)比檢查右邊的10個字符是否相同。

+0

謝謝。我也粘貼了我的代碼。它使用相同的邏輯,但不匹配10個字符,我匹配兩個中的最小值。這是因爲在我的地區,我注意到有時候人們只會在電話號碼中保留7個字符,這是一個固定電話號碼。類似的應用程序可能在世界某些地區有效 – kishu27 2012-03-04 07:48:14

+0

您的代碼非常好。我是一個老學校的c程序員,所以即時通訊思維字符,但你使用正則表達式看起來更優雅:) – ziq 2012-03-04 17:05:58

+0

*握手*我是如此愛與C和C++,我沒有觸及Java,因爲它出來,直到現在。 – kishu27 2012-03-04 18:47:55

2

如果這是Android 4,那麼內嵌的libphonenumber方法可能是您所需要的。

1

有一個輔助功能適用於這一點,因爲API級別1:

boolean PhoneNumberUtils.compare(numberA, numberB); 

我偶然發現此並行這篇文章,覺得這裏值得一提。

相關問題