我正在查看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(可编辑的)
中包含以下代码 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;
答案 0 :(得分:1)
我可能错了,但根据维基,法语数字的数字格式以“0”开头。因此,您的测试输入对LibPhoneNumber无效。 https://en.wikipedia.org/wiki/Telephone_numbers_in_France
该计划使用十位数的封闭编号方案,前两位数字表示该区域:
01Île-de-France
02法国西北部
03法国东北部
04法国东南部
05法国西南部
06和07手机服务
08免费电话(numérovert)和共享成本服务
09非地理号码(由IP语音服务使用,以前为087号码)
如果在测试值前添加“0”,则似乎正确格式化。