我的号码String
与"1234567890"
类似。
我需要将此String
格式化为"1234 5678 90"
。 (空格是SPACE字符)
有人能告诉我如何在java中这样做吗?
由于
答案 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);