java String.format:具有本地化的数字

时间:2012-12-07 13:06:16

标签: java localization numbers string-formatting

是否可以使用与NumberFormat.format相同的方式在String.format调用中本地化数字?

我希望它只是使用

String.format(locale, "%d", number)

但是这不会返回与使用NumberFormat相同的结果。例如:

String.format(Locale.GERMAN, "%d", 1234567890) 

给出:“1234567890”,而

NumberFormat.getNumberInstance(Locale.GERMAN).format(1234567890)

给出:“1.234.567.890”

如果无法完成,本地化文本(包括数字)的推荐方法是什么?

2 个答案:

答案 0 :(得分:22)

documentation开始,您必须:

  • 提供区域设置(正如您在示例中所做的那样)
  • 显示特定于区域设置的分组分隔符
  • 中包含','标记

所以你的例子会变成:

String.format(Locale.GERMAN, "%,d", 1234567890) 

请注意'd'之前的附加','标志。

答案 1 :(得分:3)

String.format()的替代方法是使用MessageFormat:

MessageFormat format = new MessageFormat("The number is {0, number}", Locale.GERMAN);
String s = format.format(new Object[] {number});