2

Androidで電話番号をフォーマットするために次のコードを試しました:-

public static String formatPhoneNumber(String number){

        return PhoneNumberUtils.formatNumber(number);
    }

「19253951646」を関数に渡しています。1-925-395-1646 の形式でテキストを返します。結果を 1(925)395-1646 の形式で取得したい。どんな助けでも高く評価されます。

4

4 に答える 4

5

数値をフォーマットする独自の関数を作成しました。

public static String formatPhoneNumber(String number){  
        number  =   number.substring(0, number.length()-4) + "-" + number.substring(number.length()-4, number.length());
        number  =   number.substring(0,number.length()-8)+")"+number.substring(number.length()-8,number.length());
        number  =   number.substring(0, number.length()-12)+"("+number.substring(number.length()-12, number.length());
        return number;
    }
于 2013-01-24T05:13:41.633 に答える
1

これは私のコードであり、これはエラーなしで実行されます:

    mobile.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void afterTextChanged(Editable editable) {
            StringBuilder digits = new StringBuilder();
            StringBuilder phone = new StringBuilder();
            char[] chars = mobile.getText().toString().toCharArray();


            for (int x = 0; x < chars.length; x++) {
                if (Character.isDigit(chars[x])) {
                    digits.append(chars[x]);
                }
            }

            //Format for 6 digits and below
            if (digits.toString().length() >= 6) {
                String six = new String();
                six += digits.toString();
                phone.append(six);
                //Format for 7 digits 
                if (digits.toString().length() >= 7) {
                    phone.setLength(0);
                    String countryCode = new String();
                    countryCode += digits.toString().substring(0, 3) + "-";
                    countryCode += digits.toString().substring(3,7);

                    phone.append(countryCode);
                    //Format for 8 and 9 digits
                    if (digits.toString().length() >= 8) {
                        phone.setLength(0);
                        String eight = new String();
                        eight += digits.toString();
                        phone.append(eight);
                        //Format for 10 digits
                        if (digits.toString().length() >= 10) {
                            phone.setLength(0);

                            String regionCode = new String();

                            regionCode += "(" + digits.toString().substring(0, 3) + ") ";
                            regionCode += digits.toString().substring(3, 6) + "-";

                            phone.append(regionCode);
                            //Format for 11 digits
                            if (digits.toString().length() >= 11) {
                                String code = new String();
                                phone.setLength(0);
                                code += digits.toString().substring(0, 1);
                                code += "(" + digits.toString().substring(1, 4) + ")- ";
                                code += digits.toString().substring(4, 7) + "-";
                                code += digits.toString().substring(7, 11);
                                phone.append(code);
                                //Format for 12 digits
                                if (digits.toString().length() >= 12) {
                                    String newCode = new String();
                                    phone.setLength(0);
                                    newCode += "+" + digits.toString().substring(0, 2);
                                    newCode += "(" + digits.toString().substring(2, 5) + ")";
                                    newCode += digits.toString().substring(5, 8) + "-";
                                    newCode += digits.toString().substring(8, 12);

                                    phone.append(newCode);
                                    //Format for 12 digits and more
                                    if (digits.toString().length() >= 13) {
                                        String noMoreThanTwelve = new String();
                                        phone.setLength(0);
                                        noMoreThanTwelve += digits.toString();
                                        phone.append(noMoreThanTwelve);
                                    }
                                }
                            } else {
                                phone.append(digits.toString().substring(6));
                            }
                        }
                    }
                }
                mobile.removeTextChangedListener(this);
                mobile.setText(phone.toString());
                mobile.setSelection(mobile.getText().toString().length());
                mobile.addTextChangedListener(this);
            } else {
                return;
            }

        }
    });

これは私のコードの出力です:

7 桁未満: 123456 = 123456

7 桁: 1234567 = 123-4567

8 桁 12345678 = 12345678

9 桁 123456789 = 123456789

10 桁 1234567890 = (123) 456-7890

11 桁 12345678901 = 1 (234) 567-8901

12 桁 123456789012 = +12 (345) 678-9012

12桁以上 12345678901234 ....

これらの変数を使用して申し訳ありませんが、私のコードを理解していただければ幸いです。

于 2019-10-23T09:09:48.483 に答える
0

Android SDKの PhoneNumberUtilsには、多かれ少なかれ適切な電話番号フォーマット ユーティリティがありますが、特別なニーズには不十分な場合があります。

「国際電話番号の解析、フォーマット、保存、および検証のための Google の一般的な Java、C++、および JavaScript ライブラリとして説明されている代替ライブラリlibphonenumberを試してください。Java バージョンはスマートフォンでの実行に最適化されており、4.0 以降の Android フレームワークで使用されています (Ice Creamサンドイッチ)。"

ライブラリには、さまざまな電話番号の書式設定オプションがあります。

于 2015-11-04T07:25:39.120 に答える
-5

1-925-395-1646

number は国際的な USA 形式です。カスタムフォーマットが必要な場合は、数値を手動で解析してフォーマットできます。

したがって、数値の前に +1 を挿入してみてください。

iPhone での証明:

ここに画像の説明を入力

また、試してみてください: PhoneNumberUtils を使用して電話番号をフォーマットする方法?

于 2013-01-23T10:08:19.893 に答える