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

wzi*_*ska 15 java localization numbers string-formatting

是否可以像在NumberFormat.format中那样在String.format调用中本地化数字?

我原以为它只是用它

String.format(locale, "%d", number)
Run Code Online (Sandbox Code Playgroud)

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

String.format(Locale.GERMAN, "%d", 1234567890) 
Run Code Online (Sandbox Code Playgroud)

给出:"1234567890",而

NumberFormat.getNumberInstance(Locale.GERMAN).format(1234567890)
Run Code Online (Sandbox Code Playgroud)

给出:"1.234.567.890"

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

ser*_*g10 23

文档中,您必须:

  • 提供一个语言环境(就像你在你的例子中所做的那样)
  • 包含','标志以显示特定语言环境的分组分隔符

所以你的例子将成为:

String.format(Locale.GERMAN, "%,d", 1234567890) 
Run Code Online (Sandbox Code Playgroud)

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


JB *_*zet 5

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

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