2009-12-21 121 views
1

是否可以使用ICU庫自定義貨幣格式的格式,類似於通過提供格式字符串(例如「mm/dd/yyy」)來格式化時間字符串的方式。ICU自定義貨幣格式化(C++)

因此,對於給定的區域設置(如美元),如果我想要的話,我可以將所有貨幣字符串返回「xxx.00 $ USD」。

回答

1

http://icu-project.org/apiref/icu4c/classDecimalFormat.html

具體做法是:http://icu-project.org/apiref/icu4c/classDecimalFormat.html#aadc21eab2ef6252f25eada5440e3c65

對於模式語法看到:http://icu-project.org/apiref/icu4c/classDecimalFormat.html#_details

我沒用過這個,但是從我的ICU的知識,這是方向。

然而我會建議使用:

http://icu-project.org/apiref/icu4c/classNumberFormat.htmlcreateCurrencyInstance成員和然後使用setMaximumIngegerDigits或其他功能,使你所需要的 - 這將是更加本地化。不要假設任何文化。由於「10,000美元」在某些國家被誤解爲「10美元」,其中「,」用於分數部分分離。

所以要小心。

0

使用ICU圖書館的createCurrencyInstance()

+0

我相信只會返回嵌入在該語言環境中的給定語言環境的貨幣格式。所以對於美元,它會返回類似「$ 100.00美元」的東西。我正在尋找一種方法來定製這種格式,但我想要的。因此,如果我想要「[價值] [符號] [貨幣名稱]」,即使這不是通常顯示的區域設置,我也可以得到它。 – Ternary 2009-12-21 19:21:48

1

您可以創建一個貨幣的實例,那麼如果它是安全的,其轉換爲DecimalFormat

if (((const NumberFormat*)fmt)->getDynamicClassID() == DecimalFormat::getStaticClassID()) 
    { const DecimalFormat* df = (const DecimalFormat*) fmt; ... 

...那麼你可以調用applyPattern就可以了。請參閱「特殊模式字符」下的¤,¤¤,¤¤¤