格式化数字字符串

时间:2013-04-22 13:43:12

标签: java string number-formatting

我的号码String"1234567890"类似。

我需要将此String格式化为"1234 5678 90"。 (空格是SPACE字符) 有人能告诉我如何在java中这样做吗?

由于

6 个答案:

答案 0 :(得分:2)

假设你的字符串长度相同:

String s1 = "1234567890";
String s2 = s1.substring(0, 3) + " " + s1.substring(4, 7) + " " + s1.substring(8, 9);

答案 1 :(得分:1)

   StringBuilder sb= new StringBuilder("1234567890");
   sb.insert(4, ' ').insert(9, ' ');
   String output= sb.toString();

答案 2 :(得分:1)

基于正则表达式的版本

     String s = "1234567890";
     s = s.replaceAll("(\\d+)(\\d{2})", "$1 $2");
     while(s.matches("\\d+\\d{4} \\d+")) {
         s = s.replaceAll("(\\d+)(\\d{4} \\d+)", "$1 $2");
     }
     System.out.println(s);

输出

1234 5678 90

答案 3 :(得分:1)

您可以使用StringBuilder来提高效果:

StringBuilder builder = new StringBuilder("1234567890");
builder.insert(4, ' ').insert(9, ' ');
String formattedString = builder.toString();

给你

1234 5678 90

答案 4 :(得分:0)

使用java.text.MessageFormat尝试此操作。

public static void main(String[] args) {
    String phoneRawString = "1234567890";

    java.text.MessageFormat phoneMsgFmt = new java.text.MessageFormat(
            "{0} {1} {2}");
    // suposing a grouping of 4-4-2
    String[] phoneNumArr = { phoneRawString.substring(0, 4),
            phoneRawString.substring(4, 8), phoneRawString.substring(8) };

    System.out.println(phoneMsgFmt.format(phoneNumArr));
}

输出:

1234 5678 90

使用正则表达式的另一种方式:

long phoneNum = 1234567890L;
String result = String.valueOf(phoneNum).replaceFirst("(\\d{4})(\\d{4})(\\d+)", "$1 $2 $3");
System.out.println(result);

答案 5 :(得分:0)

    String input = "1234567890";
    Formatter f = new Formatter(new StringBuilder(), Locale.UK);
    String res = f.format("%s%5s%3s", input.substring(0, 4), input.substring(4, 8), input.substring(8, 10)).toString();
    System.out.println(res);