的Java的String.format:数字本地化(java String.format: numb

2019-08-03 15:58发布

是否有可能本地化的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”

如果不能这样做,有什么建议本地化的文本,包括数字呢?

Answer 1:

从文档 ,你必须:

  • 提供一个场所(如你在你的例子做)
  • 包括“”标志,以显示特定的语言环境中分组分隔符

所以,你的例子将成为:

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

在‘d’之前,请注意额外的“”标志。



Answer 2:

一个替代String.format()是使用的MessageFormat:

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


文章来源: java String.format: numbers with localization