格式化法语电话号码

时间:2015-07-13 21:57:05

标签: android string-formatting number-formatting phone-number

我必须将“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

3 个答案:

答案 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数组中,然后随着时间的推移添加。应该工作还可以。你也不必在最后修剪它。