如何使用Java或Groovy printf将Thousands分隔符添加到String

时间:2010-01-19 11:27:02

标签: java groovy printf

在Java中,我需要将千位分隔符添加到格式为 String 的十进制数字。但是,我想要一个数百万或数十亿的分隔符......只有一千个分隔符,其中保留了现有的小数部分。

9 == 9

999.999 == 999.999

9,999 == 9999

999999,999.999 == 999999999.999

我不需要使用printf,但转换必须尽可能快。

输入和输出类型必须都是字符串

谢谢!

4 个答案:

答案 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