【问题标题】:java String.format: numbers with localizationjava String.format:带有本地化的数字
【发布时间】:2012-12-07 13:06:16
【问题描述】:

是否可以像 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”

如果做不到,有什么推荐的方法来本地化包括数字在内的文本?

【问题讨论】:

  • 为什么不先将“String-Number”解析为数字,然后使用数字格式化程序进行格式化?
  • 我的“String-Number”可以是包含数字的字符串,所以无法解析为数字。

标签: java localization numbers string-formatting


【解决方案1】:

documentation,您必须:

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

所以你的例子会变成:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-05
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多