是否可以使用ICU庫自定義貨幣格式的格式,類似於通過提供格式字符串(例如「mm/dd/yyy」)來格式化時間字符串的方式。ICU自定義貨幣格式化(C++)
因此,對於給定的區域設置(如美元),如果我想要的話,我可以將所有貨幣字符串返回「xxx.00 $ USD」。
是否可以使用ICU庫自定義貨幣格式的格式,類似於通過提供格式字符串(例如「mm/dd/yyy」)來格式化時間字符串的方式。ICU自定義貨幣格式化(C++)
因此,對於給定的區域設置(如美元),如果我想要的話,我可以將所有貨幣字符串返回「xxx.00 $ USD」。
見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.html和createCurrencyInstance
成員和然後使用setMaximumIngegerDigits或其他功能,使你所需要的 - 這將是更加本地化。不要假設任何文化。由於「10,000美元」在某些國家被誤解爲「10美元」,其中「,」用於分數部分分離。
所以要小心。
使用ICU圖書館的createCurrencyInstance()。
您可以創建一個貨幣的實例,那麼如果它是安全的,其轉換爲DecimalFormat
if (((const NumberFormat*)fmt)->getDynamicClassID() == DecimalFormat::getStaticClassID())
{ const DecimalFormat* df = (const DecimalFormat*) fmt; ...
...那麼你可以調用applyPattern就可以了。請參閱「特殊模式字符」下的¤,¤¤,¤¤¤
我相信只會返回嵌入在該語言環境中的給定語言環境的貨幣格式。所以對於美元,它會返回類似「$ 100.00美元」的東西。我正在尋找一種方法來定製這種格式,但我想要的。因此,如果我想要「[價值] [符號] [貨幣名稱]」,即使這不是通常顯示的區域設置,我也可以得到它。 – Ternary 2009-12-21 19:21:48