【发布时间】:2009-12-21 18:36:11
【问题描述】:
是否可以使用 ICU 库自定义格式货币字符串,类似于通过提供格式字符串(例如“mm/dd/yyy”)来格式化时间字符串的方式。
因此,对于给定的语言环境(例如美元),如果我愿意,我可以让所有货币字符串返回“xxx.00 $ USD”。
【问题讨论】:
是否可以使用 ICU 库自定义格式货币字符串,类似于通过提供格式字符串(例如“mm/dd/yyy”)来格式化时间字符串的方式。
因此,对于给定的语言环境(例如美元),如果我愿意,我可以让所有货币字符串返回“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 成员和then 使用setMaximumIngegerDigits 或其他函数来制作您需要的东西——这将更加本地化。尽量不要假设任何文化。因为“10,000 美元”在某些国家/地区被误解为“10 美元”,其中“,”用于小数部分的分离。
所以要小心。
【讨论】:
您可以创建一个货币实例,然后在安全的情况下将其转换为DecimalFormat
if (((const NumberFormat*)fmt)->getDynamicClassID() == DecimalFormat::getStaticClassID())
{ const DecimalFormat* df = (const DecimalFormat*) fmt; ...
...然后你可以调用 applyPattern 。请参阅“特殊模式字符”下有关 ¤、¤¤、¤¤¤ 的信息
【讨论】:
使用 ICU 图书馆的createCurrencyInstance()。
【讨论】: