Каков наилучший способ сопоставления двух форматов телефонных номеров в Android SDK? - PullRequest
2 голосов
/ 04 марта 2012

Каким должен быть лучший способ сопоставления телефонных номеров в ситуации, когда формат номера телефона будет проблемой?

Я ищу богатый стандартами лучший способ сделать это. У меня есть пользователи, введите телефонный номер и сохранить в БД SQLite. Позже, когда приходит телефонный звонок, я получаю входящий номер через ITelephony. Я должен сопоставить значение в БД с входящим номером и принять меры. Форматы этих номеров могут сильно различаться и могут вызывать проблемы.

Чтобы обойти эту проблему, я сейчас использую регулярное выражение, чтобы исключить символы форматирования и оставить только цифры, чтобы получить правильное соответствие. Это работает нормально, но я хотел знать, есть ли у кого-то лучший способ сделать это, или же у 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 ]

2 голосов
/ 09 ноября 2012

Если это Android 4, то, вероятно, вам понадобятся встроенные методы libphonenumber.

2 голосов
/ 04 марта 2012

Перейдите к каждому символу и избавьтесь от любого символа, который меньше 0 или больше 9. (простой цикл while) Чем проверить, совпадают ли 10 символов справа или нет.

1 голос
/ 13 июня 2015

Для этого существует вспомогательная функция, начиная с уровня API 1:

boolean PhoneNumberUtils.compare(numberA, numberB);

Я обнаружил это параллельно с этим постом и думаю, что здесь стоит упомянуть.

...