【问题标题】:Format an Integer using Java String Format使用 Java 字符串格式格式化整数
【发布时间】:2011-08-27 10:21:15
【问题描述】:

我想知道是否可以使用 Java 中的 String.format 方法在零之前给出一个整数?

例如:

1 会变成 001
2 会变成 002
...
11 会变成 011
12 会变成 012
...
526 将保留为 526
...等

目前我已经尝试了以下代码:

String imageName = "_%3d" + "_%s";

for( int i = 0; i < 1000; i++ ){
    System.out.println( String.format( imageName, i, "foo" ) );
}

不幸的是,这在数字前面有 3 个空格。是否可以在数字前加零?

【问题讨论】:

标签: java string-formatting number-formatting


【解决方案1】:
String.format("%03d", 1)  // => "001"
//              │││   └── print the number one
//              ││└────── ... as a decimal integer
//              │└─────── ... minimum of 3 characters wide
//              └──────── ... pad with zeroes instead of spaces

更多信息请参见java.util.Formatter

【讨论】:

    【解决方案2】:

    在整数的格式说明符中使用%03d0 表示如果数字小于三个(在这种情况下)数字,则该数字将被零填充。

    有关其他修饰符,请参阅 Formatter 文档。

    【讨论】:

      【解决方案3】:

      如果您使用名为 apache commons-lang 的第三方库,以下解决方案可能会很有用:

      使用StringUtils类的apache commons-lang

      int i = 5;
      StringUtils.leftPad(String.valueOf(i), 3, "0"); // --> "005"
      

      因为StringUtils.leftPad()String.format()

      【讨论】:

      • StringUtils.leftPad 是另一个不错的选择,可以说它更具可读性,而且它允许您填充其他字符。我有一个谷歌,但我找不到任何证实它更快的东西 - 你能提供一些证据吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多