如何获取 libphonenumber 来格式化法语 phone 数字?

How to get libphonenumber to format French phone numbers?

我正在研究 libphonenumber 库 (https://github.com/googlei18n/libphonenumber),但我只能让它在 "US" 和 "BR" 地区工作。如何让它在 "FR" 地区工作?我要找的格式是 1 41 02 25 00.

我可以用我自己的代码得到这种格式

            @Override
            public void afterTextChanged(Editable s) {
                // phone digits without formatting
                phone = s.toString().replaceAll("[^\d]", "");
                        if (phone.length() == 1) {
                            edtPhoneNumber.setText(s.toString().concat(" "));
                            // move cursor to original position relative to the end of the string
                            edtPhoneNumber.setSelection(edtPhoneNumber.getText().length() - cursorPos);
                        } else {
                            if (pairings.length() >= 2) {
                                pairings = "";
                            }
                            pairings = pairings.concat(phone.substring((phone.length()-1)));
                            if (pairings.length() >= 2) {
                                if (phone.length() < 9) {
                                    edtPhoneNumber.setText(s.toString().concat(" "));
                                } else {
                                    edtPhoneNumber.setText(s.toString());
                                }
                            } else {
                                edtPhoneNumber.setText(s.toString());
                            }
                            // move cursor to original position relative to the end of the string
                            edtPhoneNumber.setSelection(edtPhoneNumber.getText().length() - cursorPos);
                        }
              }

我的库实现如下。用感兴趣的区域代码实例化后,

AsYouTypeFormatter aytf = PhoneNumberUtil.getInstance().getAsYouTypeFormatter("FR") 

然后我在 afterTextChanged(Editable s)

中有以下代码
                    if(phone.length() > 0){
                        for(int i = 0; i < phone.length(); i++){
                            formattedPhoneNumber = aytf.inputDigit(phone.charAt(i));

                        }
                        //The formatted output shows properly in this EditText but not when I try to put it back into the original one (phoneNumberText)
                        edtPhoneNumber.setText(formattedPhoneNumber);
                        edtPhoneNumber.setSelection(edtPhoneNumber.getText().length() - cursorPos);
                        aytf.clear();
                    }

                    formattedPhoneNumber = null;
                    isPhoneFormatting = false;

我可能错了,但根据 wiki,法语数字的数字格式以“0”开头。因此您的测试输入对 LibPhoneNumber 无效。 https://en.wikipedia.org/wiki/Telephone_numbers_in_France

该计划采用十位封闭编号方案,其中前两位数字表示面积:

01 法兰西岛
02 法国西北部
03 法国东北部
04 法国东南部
05 法国西南部
06 和 07 移动 phone 服务
08 免费phone (numéro vert) 和共享费用服务。
09 非地理号码(用于 IP 语音服务,以前是 087 号码)

如果你在你的测试值前面加上“0”,它的格式似乎是正确的。