我必须将“0612345678”格式化为“06 12 34 56 78” 我目前正在使用它:
private String FormatTel(String number) {
try {
String formattedNumber = "";
int i;
for (i = 0; i < 10; i += 2) {
formattedNumber += number.substring(i, i + 2) + " ";
}
return formattedNumber.substring(0, formattedNumber.length() - 1);
} catch (IndexOutOfBoundsException e) {
return number;
}
}
它仅适用于运行API 16(JellyBean 4.1.1)的模拟器:在其上,结果看起来像我想要的(“06 12 34 56 78”),但在我自己的手机上,(API 22) ,Lollipop 5.1.1),它不起作用:结果为“0 61 23 45 67”,而方法是相同的!
我做了一些研究,我找到了String.Format方法。但是我在这里需要帮助,这对我来说太难了......!
提前谢谢你:D
修改:
工作方法,使用libphonenumber:
private String FormatTel(String number) {
String formattedNumber = number;
try {
PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
Phonenumber.PhoneNumber numberProto;
numberProto = phoneNumberUtil.parse(number, "FR");
formattedNumber = phoneNumberUtil.format(numberProto, PhoneNumberUtil.PhoneNumberFormat.NATIONAL);
} catch (NumberParseException e) {
e.printStackTrace();
}
return formattedNumber;
}
感谢 Ye Lin Aung !
答案 0 :(得分:2)
我已经在我的Lollipop手机上尝试了您的代码,它可以正常运行。
或者,我始终建议您使用libphonenumber轻松解析电话号码,无论何时使用电话号码进行操作。这是如何做到的。
try {
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
Phonenumber.PhoneNumber numberProto;
numberProto = phoneUtil.parse("+330612345678", "");
Log.i("code",
"code " + phoneUtil.format(numberProto, PhoneNumberUtil.PhoneNumberFormat.NATIONAL));
} catch (NumberParseException e) {
e.printStackTrace();
}
将导致
I/code﹕ code 06 12 34 56 78
答案 1 :(得分:2)
您可以编写一个简单的正则表达式。
"0612345678".replaceAll("(.{2})", "$1 ");
这里我们尝试使用两个字符组,然后用该组的值加一个空格替换每个组。
()
表示一个群组
.{2}
任意两个字符
$x
将选择第x组。
注意:这会在末尾添加额外的空格,您可能需要修剪字符串。
答案 2 :(得分:0)
char[] charArray = YourString.toCharArray();
String finalString = "";
for(int i=0; i<charArray.length; i++) {
if(i!=0 && i%2==0)
finalString += " " + charArray[i];
else
finalString += charArray[i];
}
将字符串放入char数组中,然后随着时间的推移添加。应该工作还可以。你也不必在最后修剪它。