9

携帯端末から電話番号を受信して​​います。形式は国際形式とは異なります。

シナリオ (例として ZA 形式) :

データベースの登録番号は常に国際形式です: +27827177982

受け取る番号はさまざまです。例: +27827177982= 27827177982= 0827177982- 番号の国際プレフィックスは+27

国際フォーマットを受け取っていないのに、国際フォーマットに一致させるにはどうすればよいですか???


心に留めておいてください:

1 つのリージョンだけを変換することはできません。

すべての地域の携帯電話番号を比較する簡単な方法はありますか?

接頭辞の文字数参照の範囲: http://en.wikipedia.org/wiki/List_of_country_calling_codes


私のアイデア:

  • 番号の最後の 9 文字を比較すると、地域の接頭辞が除外されます...しかし、すべての地域には「接頭辞を除く 9 文字」しかありませんか?

  • 電話番号を数回比較してデータベースをループします。たとえば、最後の 9 つの番号を確認します。一致しない場合は、最後の 10 の番号を確認します (ただし、不要な一致が発生する可能性があります)。


どんな助けでも大歓迎です

4

3 に答える 3

9

これにはライブラリの使用を検討することをお勧めします。たとえば、Google のlibphonenumberライブラリの C#ポートは hereです。特に、これらの2つの方法は検討する価値があるかもしれません(私の強調)

isNumberMatch - 2 つの数値が同じかどうかの信頼レベルを取得します。

getExampleNumber/getExampleNumberByType - すべての国/地域に有効なサンプル番号を提供し、必要なサンプル電話番号のタイプを指定するオプションがあります。

于 2013-07-11T15:18:55.813 に答える
0

ほとんどの国 (米国は顕著な例外です) では、国際電話以外の番号は 0 で始まるため、解決策は次のようになります。

  • その国が例外リストに載っている場合は、特別に対処してください。
  • それ以外は
    • 最初の文字が の場合は0、それを削除して国際国番号を追加します
    • 最初の文字が であることを確認し+ます。

国際的に設定されたルールや電話番号の仕組みがないため、これに対する簡単な答えはありません。

于 2013-07-11T15:19:07.487 に答える