2015-07-10 56 views
1

我有我的字符串「08000001066」。
該字符串是一個電話號碼,應該以正確的格式顯示爲「0800 000 1066」。Java,帶索引空白的格式字符串

一個人建議我應該使用此代碼塊,

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

這導致一些接近我想要的東西,而不是確切的DecimalFormat需要數(雙,或漂浮 - 這一個零領先的字符串不能被解析)。

如何通過類似Decimal Format的####,###,###的方法來格式化字符串?

+0

您的例如兩個多的數字作爲####,###,###格式化。是什麼賦予了? – Bathsheba

回答

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

我更喜歡這個答案,因爲我可以明確指定空白的索引。非常感謝 –

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)); 
0
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))); 
}