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

是否可以以与相同的方式在呼叫中本地化号码?String.formatNumberFormat.format

我期望它只是使用

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

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

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

给出:“1234567890”,而

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

给出: “1.234.567.890”

如果无法完成,建议使用什么方法对文本(包括数字)进行本地化?


答案 1

文档中,您必须:

  • 提供区域设置(如示例中所述)
  • 包括''标志以显示特定于区域设置的分组分隔符,

所以你的例子会变成:

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

请注意“d”前面的附加“”标志。,


答案 2

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

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