Java,带索引空白的格式字符串

问题描述:

我有我的字符串“08000001066”。
该字符串是一个电话号码,应该以正确的格式显示为“0800 000 1066”。Java,带索引空白的格式字符串

一个人建议我应该使用此代码块,

DecimalFormatSymbols phoneNumberSymbols = new DecimalFormatSymbols(); 
phoneNumberSymbols.setGroupingSeparator(' '); 
DecimalFormat phoneNumberFormat = new DecimalFormat("####,###,###", phoneNumberSymbols); 

这导致一些接近我想要的东西,而不是确切的DecimalFormat需要数(双,或漂浮 - 这一个零领先的字符串不能被解析)。

如何通过类似Decimal Format的####,###,###的方法来格式化字符串?

+0

您的例如两个多的数字作为####,###,###格式化。是什么赋予了? – Bathsheba

String phoneNumber = "08000001066"; 
     StringBuilder sb = new StringBuilder(phoneNumber) 
      .insert(4," ") 
      .insert(8," "); 
     String output = sb.toString(); 
+0

我更喜欢这个答案,因为我可以明确指定空白的索引。非常感谢 –

试试这个,它依赖于你的输入是正确的位数,但与前导零一起工作。

String inputString = "08000001066"; 

java.text.MessageFormat phoneFormat = new java.text.MessageFormat("{0} {1} {2}"); 
String[] phoneNumberArray = {inputString.substring(0,4), inputString.substring(4,7), inputString.substring(7)}; 

System.out.println(phoneFormat.format(phoneNumberArray)); 

Pattern p = Pattern.compile("(\\d{4})(\\d{3})(\\d{4})"); 
String s = "08000001066"; 
Matcher m = p.matcher(s); 
if(m.matches()) { 
    return String.format("%s %s %s", m.group(1), m.group(2), m.group(3))); 
}