使用Java字符串格式格式化整数


129

我想知道是否有可能在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个空格。可以在数字前面加上零吗?


Answers:


172

使用%03d格式说明为整数。的0装置,该数目将是零填充,如果它是少于三个(在这种情况下)位。

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


211
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以获取更多信息。


13

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

使用StringUtilsapache commons-lang类

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

由于StringUtils.leftPad()比快String.format()


StringUtils.leftPad是另一个不错的选择,可以说它更具可读性,并且允许您使用其他字符进行填充。我周围有Google,但找不到任何能证明它更快的东西-您能提供一些证据吗?
我的头部受伤2013年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.