2012-03-04 5 views
2

電話番号の形式が問題になる状況で電話番号を照合する最良の方法は何ですか?android SDKの2つの形式の電話番号を照合する最良の方法は何ですか?

私はこれを行うための標準的な豊富なベストプラクティスの方法を探しています。私はユーザーに電話番号を入力し、SQLite DBに保存します。後である時点で、電話がかかってくると、ITelephonyを介して着信番号を取得します。私はdb内の値とincomingNumberを一致させてアクションを取らなければなりません。これらの番号の形式は大きく異なり、問題を引き起こす可能性があります。

この問題を回避するために、正規表現を使用して書式設定文字を削除し、数字だけを残して適切な一致を得ます。これはうまくいきましたが、誰かがもっと良い方法を持っているかどうか、またはAndroidに2つの電話番号を一致させる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

移動し、9 0より小さいか大きい任意の文字を取り除きます(簡単なwhileループ)右側の10文字が同じかどうかのチェック。

+0

ありがとうございました。私はちょうど私のコードを貼り付けた。同じロジックを使用していますが、10文字をマッチングさせる代わりに、2つの最小値を一致させています。これは、私の地域では、固定電話番号である電話番号にはたったの7文字しか残さないことに気付きました。同様のアプリケーションは、世界中のある地域で有効です。 – kishu27

+0

コードはかなり良いです。 Im古い学校のCプログラマなので、charを考えていますが、よりエレガントに見えるregexpを使用しています:) – ziq

+0

*握手する*私はCとC++でSO LO IN LOVEでした。 – kishu27

2

これがAndroid 4の場合は、必要なのは、組み込みlibphonenumberメソッドだけです。

1

ヘルパー機能はAPIレベル1から、このために利用可能があります:私はこの投稿へ並列にこれを見つけると、それはここで言及する価値があると考えるために起こった

boolean PhoneNumberUtils.compare(numberA, numberB); 

関連する問題