1

我不確定是否有其他問題提出相同的問題。到目前爲止,我還沒有在stackoverflow中看到這個問題,因此發佈相同。如何在格式化數字時確定貨幣符號的放置位置?

我有一個要求,我需要根據貨幣格式化數字。

enter image description here

讓我解釋一下上面的表格給你我的問題更多的上下文。對於美國,數字格式爲USD976,543.21,這裏的貨幣符號是美元,它放在數字前面的前面。這與fr-FR區域設置稍有不同,這裏符號位於數字之後。

我所有的格式都發生在前端而不是後端。我正在給FE格式的#格式,然後我們自己生成的代碼格式化該格式的數字。例如,對於美國,我提供USD ###,###,###。####。在這裏,我需要讓前端知道下面的信息,以便前端以及時的方式格式化。 我的問題是: 有沒有什麼辦法讓在後臺以下信息:

  1. 放在什麼地方貨幣,啓動次數或爭取結束?
  2. 數字和符號之間是否有空格?看看976,543.21美元和976 543,21歐元。貨幣符號與歐元數量之間有空格,但不是美元。

我正在使用java.util.Currency。

回答

0

您可以使用Globalizejs您的需求

一個JavaScript庫的國際化和本地化,充分利用官方的Unicode CLDR JSON數據

這是很容易下手,你不必擔心將貨幣代碼放在前面或末尾,圖書館將根據區域設置和currencyCode進行處理。

實施例:

var formatter; 

Globalize.locale("en"); 
formatter = Globalize.currencyFormatter("USD"); 

formatter(9.99); 
// > "$9.99" 
在不同的區域設置

var deFormatter = Globalize("de").currencyFormatter("EUR"); 
deFormatter(9.99); 
// > "9,99 €" 

enter image description here

+0

我認爲問題是Java的JavaScript不... – Adam

+0

是的,我讀了,但此行'我的所有格式在前端發生,而不是backend.'吸引我的目光。因此給了他一個簡單而又充分發展的解決方案。 :) –

+0

謝謝@NeerajJain您的意見。我有一個本國代碼來進行數字格式化。我所缺少的是我在問題中提出的兩個問題。如何確定貨幣符號的位置,首先還是最後?貨幣代碼和符號之間是否有空格? – nimi

0

的NumberFormat.getCurrencyInstance()可用於根據特定的區域設置的貨幣來格式化的數在後端。格式化的貨幣可以傳遞給FE進行渲染。例如:

double num = 976_543.21; 

    NumberFormat defaultFormat = NumberFormat.getCurrencyInstance(new Locale("fr","FR")); 
    System.out.println(defaultFormat.format(num)); //output 976 543,21 € 

    Locale us = new Locale("en", "US"); 
    NumberFormat usFormat = NumberFormat.getCurrencyInstance(us); 
    System.out.println(usFormat.format(num)); //output $976,543.21 
+0

我沒有在BE中進行數字格式化,因爲我需要在前端進行格式設置。爲了做到這一點,我需要更多的東西,1.在哪裏放置貨幣,數字的開始或結束,我如何確定這一點。 2.數字和符號之間是否有空格。 – nimi