在Java中,我需要将千位分隔符添加到格式为 String 的十进制数字。但是,我不想要一个数百万或数十亿的分隔符......只有一千个分隔符,其中保留了现有的小数部分。
9 == 9
999.999 == 999.999
9,999 == 9999
999999,999.999 == 999999999.999
我不需要使用printf,但转换必须尽可能快。
输入和输出类型必须都是字符串。
谢谢!
答案 0 :(得分:2)
首先,这个问题并不像看起来那么简单,因为千位分隔符并不总是逗号,而是依赖于用户的Locale。在某些情况下,它实际上是一个句点,这可能会导致您为字符串操作编写的任何代码出现问题。
如果您希望兑现用户的区域设置,则需要采用更加深思熟虑的方法,另一方面,如果您只是想考虑这个特定情况并且不关心区域设置,那么您可以尝试类似这样:
String s = "99999999.999";
s.replaceFirst("^(\\d+)(\\d{3})(\\.|$)", "$1,$2$3");
答案 1 :(得分:0)
目前最好的解决方案是:
return text.replaceFirst(“^(\ d +)(\ d {3})(\。| $)”,“$ 1,$ 2 $ 3”);
答案 2 :(得分:0)
java.text.NumberFormat就是你所需要的。
访问http://java.sun.com/j2se/1.4.2/docs/api/java/text/NumberFormat.html
答案 3 :(得分:0)
def test='6816843541.5432'
index = test.indexOf('.')
test = test.substring(0,index - 3 ) + ',' + test.substring(index-3,test.size())
println test