2014-01-09 2 views
4

Я пишу некоторые строки в текстовый файл с помощью заводной (Grails 1.3.7), и я хочу, чтобы отформатировать валюту как в этом примере выход:Groovy валюты форматирования

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

Так в основном выравниваются вправо или слева, с знаком доллара перед номером, чтобы все они выстроились так, как показано выше. Первое число - это самое длинное, что мы ожидаем увидеть. Прямо сейчас у меня есть переменная количества, которая просто определяется с помощью def, а не строки или числа или чего-то подобного, но я могу, очевидно, изменить это, если нужно. Благодаря!

+0

Что вы имеете в настоящее время? –

ответ

10

Возможно, вы захотите использовать NumberFormat.getCurrencyInstance(). Это вернет объект NumberFormat, который использует стандартное представление валюты для вашего локали по умолчанию (или, возможно, тот, который вы передаете).

Для правового обоснования, вы можете использовать .

Пример:

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 
+0

Отлично! Это именно то, что я искал. Благодаря! – tnichol

4

В Граалей soemthing, как это будет форматировать его приятно с запятой разделителей.

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

Для правильного выравнивания Я хотел бы использовать стиль:

<td style='text-align:right;...'> 
Смежные вопросы