Groovy货币格式

时间:2014-01-09 22:25:26

标签: groovy formatting currency

我正在使用groovy(grails 1.3.7)将一些行写入文本文件,我想像这个示例输出那样格式化货币:

$100,000,000.00
  $9,123,123.25
         $10.20
      $1,907.23

所以基本上是右对齐,或左边填充,在数字前面加上美元符号,所以它们都像上面一样排列。第一个数字是我们期望看到的最长数字。现在我有一个数量变量,只是定义了一个def而不是字符串或数字或任何特定的类似但我可以明显改变,如果需要。谢谢!

2 个答案:

答案 0 :(得分:11)

您可能想要使用NumberFormat.getCurrencyInstance()。这将返回一个NumberFormat对象,该对象使用默认语言环境的标准货币表示形式(或者可选地,您传入的那个)。

要正确对齐,您可以使用String.padLeft()

示例:

def formatter = java.text.NumberFormat.currencyInstance
def values = [0, 100000000, 9123123.25, 10.20, 1907.23]
def formatted = values.collect  { formatter.format(it) }
def maxLen = formatted*.length().max()
println formatted.collect { it.padLeft(maxLen) }.join("\n")

//output
          $0.00
$100,000,000.00
  $9,123,123.25
         $10.20
      $1,907.23

答案 1 :(得分:4)

在grails中,类似的东西会用逗号分隔符很好地格式化。

<g:formatNumber number="${150000}" type="currency" currencyCode="USD"/>

对于右对齐,我会使用样式:

<td style='text-align:right;...'>