13

NSFormatter、、およびその他のフォーマットクラスを調べましたがNSNumberFormatter、ソリューションへの組み込みが見つかりません。国番号に応じて電話番号をフォーマットする必要があります。

たとえば、米国の場合、の+16313938888ようにフォーマットする必要があるような文字列を取得します+1(631)393-8888。問題は、すべての形式でこれを行う必要があることです。オランダ、私は(そのようなもの)+31641234567になる文字列を受け取ります。+31(6)41 23 45 67

200か国以上でのハードコーディングは面倒で、すべてのフォーマット規則を本当に知っているわけではありません。私が見落としているドキュメントに何かありますか、またはこれを管理するオープンソースクラスを知っている人はいますか?

4

5 に答える 5

10

iOS固有のソリューションについては、https://github.com/rmaddy/RMPhoneFormatを参照してください。

于 2012-10-28T21:45:25.027 に答える
3

このGoogleソリューションを試してください-https://github.com/me2day/libPhoneNumber-iOSC++、Java、Objective-C などのポートがあります。

于 2013-11-14T08:38:53.493 に答える
1

残念ながら、iOSにはこのためのパブリックAPIがありません。国際電話番号を解析およびフォーマットするための完全な実装であるlibphonenumberの統合を試みることができます。それはC++バージョンを持っているので、理論的にはそれとクロスリンクすることができます。

于 2012-09-13T14:03:08.610 に答える
0

さまざまな国の形式すべてをハードコーディングする必要はありません。通常、国ごとに3〜5の形式があります。代わりに、フォーマットデータベース(plistなど)を使用し、指定された国コードに基づいて数値をフォーマットするコードを記述します。

優れた国際フォーマットプロパティリスト「UIPhoneFormats.plist」はここにあります:https://code.google.com/p/iphone-patch/source/browse/trunk/bgfix/UIKit.framework/PhoneFormats/UIPhoneFormats.plist? r = 7

そのリストでは、「$」は任意の文字を許可し、「#」は数字でなければならず、「(スペース)」、「(」、「)」、および「-」は数字の間に挿入されます。ユーザーが入力した数字以外の文字は、目的の形式を示唆します。

https://github.com/lathamglobal/iOS-Phone-Number-Formatterで、AhmedAbdelkaderの仕事に触発された電話番号フォーマッタークラスを共有しました。これは、上記のplistを使用する、非常に小さい単一クラスの国際電話番号フォーマッターです。

于 2015-06-30T22:19:18.243 に答える
-1

あなたはこれを試すことができます:

    let phoneNumber : CNPhoneNumber
    let digits = phoneNumber.performSelector("digits").takeRetainedValue() as! String

それはあなたに電話番号で、フォーマットすることなく、直接あなたに文字列を与えます。ただし、番号が国際プレフィックスで保存されている場合は、結果の文字列にもその番号が含まれます。

于 2015-10-03T23:11:37.920 に答える