Java,带索引空白的格式字符串
问题描述:
我有我的字符串“08000001066
”。
该字符串是一个电话号码,应该以正确的格式显示为“0800 000 1066
”。Java,带索引空白的格式字符串
一个人建议我应该使用此代码块,
DecimalFormatSymbols phoneNumberSymbols = new DecimalFormatSymbols();
phoneNumberSymbols.setGroupingSeparator(' ');
DecimalFormat phoneNumberFormat = new DecimalFormat("####,###,###", phoneNumberSymbols);
这导致一些接近我想要的东西,而不是确切的DecimalFormat
需要数(双,或漂浮 - 这一个零领先的字符串不能被解析)。
如何通过类似Decimal Format的####,###,###
的方法来格式化字符串?
答
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)));
}
您的例如两个多的数字作为####,###,###格式化。是什么赋予了? – Bathsheba