2011-12-14 13 views
1

iPhoneには、例えば、かなり良い電話番号の分割機能を持っていますiPhoneの電話番号分割アルゴリズムですか?

シンガポールモバイル:+65 9852 4135
シンガポール常駐ライン:+65 6325 6524
中国携帯電話:+86 135-6952-3685
中国常駐ライン:+86 10-65236528
香港:+886 956-238-82
USA:+1(732)865から3286

お知らせここの素晴らしい機能:
- 国コードの分割、 市外局番残りは自動です。
- デリミタもまた、異なる国にうまく採用されています。 "()"、 " - "、スペース。

注:構文解析ロジックは私には適していますが、ほとんどの国の電話番号形式の知識をどこから得るべきかわかりません。
どこでこのような知識を見つけることができましたか、それを実装したオープンソースコードですか?

答えて

2

あなたはlibphonenumberコードライブラリと同様の機能を得ることができます。

+0

ahaだから、私はこれを考えるべきだ:誰があなたのように保存機能を提供するのだろうか?もちろん、ライバル! :D – athos

0

興味深いことに、これにはNSNumberFormatterを使用することはできませんが、独自のカスタムクラスを作成することはできます。新しいクラスを作成し、countryCode,areaCodenumberなどのプロパティを設定してから、countryCodeに基づいて番号をフォーマットするメソッドを作成します。

はここで偉大な例です:余談としてhttp://the-lost-beauty.blogspot.com/2010/01/locale-sensitive-phone-number.html

+0

よく、この挑戦​​はコーディングではなく、世界の200カ国の知識はわかりません。 – athos

+0

時間をかけてあなたを助けようとする人に迷惑をかけるのではなく、あなたが解決できない問題の部分を定式化するのに時間がかかるかもしれません。あなたが望むのは、フォーマットの表であり、数値をフォーマットする方法ではありません。 – PengOne

+0

私は申し訳ありません、今私は元の質問が曖昧であることを認識しています。私は問題を解析していない、または解析のための電話コードドメインの知識。 – athos

0

:友人は、彼が世界各国の何百もの傍受通信のうち、電話番号を選ぶことができることを維持しなければならなかった巨大正規表現について教えてくれました。それは非常に重要ではありませんでした。そして、あなたがそれぞれに電話番号の文字列から、あなたは、単に出力1桁を印刷しているとき

format[usa] = "+d (ddd) ddd-dddd"; 
format[hk] = "+ddd ddd-ddd-dd"; 
format[china_mobile] = "+dd ddd-dddd-dddd"; 
... 

:あなただけの国ごとのフォーマットを持つテーブルを持つことができるよう

はありがたいことに、あなたの問題は、簡単です必要に応じてdスポット。これは、あなたが国を知っていることを前提としています。これは、電話機の安全性を十分に前提としています。

some countries have different formats with different lengthsますので追加情報を使用して、テーブルを格納する必要があります

format[germany][10] = "..." 
format[germany][11] = "....."