在Android SDK中匹配两种格式的电话号码的最佳方法是什么?

时间:2012-03-04 05:35:35

标签: android regex phone-number

在电话号码格式有问题的情况下,匹配电话号码的最佳方法是什么?

我正在寻找一种标准丰富的最佳实践方法。我让用户输入电话号码并保存到SQLite DB。稍后的某个时间点,当有电话通话时,我通过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);
    }

3 个答案:

答案 0 :(得分:2)

遍历每个字符并删除任何小于0或大于9的字符。(简单循环)然后检查右边的10个字符是否相同。

答案 1 :(得分:2)

如果这是Android 4,则可能只需要内置的libphonenumber方法。

答案 2 :(得分:1)

自Api等级1以来,有一个辅助功能可用于此:

boolean PhoneNumberUtils.compare(numberA, numberB);

我碰巧在这篇文章的同时发现了这一点,并认为这里值得一提。