如何在从上一个开始的每3个位置之后插入一个逗号(?)字符串?
input desired output
9876567846678 9,876,567,846,678
567 567
1234 1,234
我使用了一种方法,例如首先将整个字符串分成三个位置,然后将三个位置合并追加昏迷。
有没有更好的解决方案?在java中有没有可用于执行此操作的功能?
编辑:
LAS_VEGAS答案将根据区域设置格式化数字。但我想将其格式化为固定的语言环境...
我该怎么办?
答案 0 :(得分:5)
是的,有一个"技巧"在Java中:
public static String addCommas(int num) {
DecimalFormat df = new DecimalFormat();
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setGroupingSeparator(',');
df.setDecimalFormatSymbols(dfs);
return df.format(num);
}
System.out.println(addCommas(123456789));
修改强> 如果您希望输出独立于区域设置,可以使用以下方法。它从结尾开始,因此不需要反转字符串,应该非常有效:
public static String addCommas(int num) {
StringBuilder s = new StringBuilder(Integer.toString(num));
for(int i = s.length() - 3; i > 0; i -= 3) {
s.insert(i, ',');
}
return s.toString();
}
答案 1 :(得分:2)
查看NumberFormat类,它完全用于将数字格式化为文本输出。
特别是,DecimalFormat
使用,
符号作为分隔符的实例是您正在寻找的。例如,#,##0
的格式模式应该根据需要输出整数,如果没有其他约束。
答案 2 :(得分:-1)
好吧,你也可以使用StringBuilder来做到这一点。这是一个快速入侵的解决方案:
StringBuilder sb = new StringBuilder("123456789");
int initLength = sb.length();
for(int i=1; i<initLength; i++){
if(i % 3 == 0){
sb.insert(initLength-i, ",");
}
}
System.out.println(sb);