2009-12-21 116 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就可以了。请参阅“特殊模式字符”下的¤,¤¤,¤¤¤