在電話號碼格式有問題的情況下,匹配電話號碼的最佳方法是什麼?在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);
}
謝謝。我也粘貼了我的代碼。它使用相同的邏輯,但不匹配10個字符,我匹配兩個中的最小值。這是因爲在我的地區,我注意到有時候人們只會在電話號碼中保留7個字符,這是一個固定電話號碼。類似的應用程序可能在世界某些地區有效 – kishu27 2012-03-04 07:48:14
您的代碼非常好。我是一個老學校的c程序員,所以即時通訊思維字符,但你使用正則表達式看起來更優雅:) – ziq 2012-03-04 17:05:58
*握手*我是如此愛與C和C++,我沒有觸及Java,因爲它出來,直到現在。 – kishu27 2012-03-04 18:47:55