18

是否可以像本地化String.format呼叫一样本地化号码NumberFormat.format

我期望它只是使用

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

但这不会返回与NumberFormat. 例如:

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

给出:“1234567890”,而

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

给出:“1.234.567.890”

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

4

2 回答 2

31

文档中,您必须:

  • 提供语言环境(就像您在示例中所做的那样)
  • 包含“ ,”标志以显示特定于区域设置的分组分隔符

所以你的例子会变成:

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

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

于 2012-12-07T13:12:56.923 回答
5

另一种方法String.format()是使用 MessageFormat:

MessageFormat format = new MessageFormat("The number is {0, number}", Locale.GERMAN);
String s = format.format(new Object[] {number});
于 2012-12-07T13:18:55.760 回答