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

使用Java字符串格式格式化整数,java,string-formatting,number-formatting,Java,String Formatting,Number Formatting,我想知道是否可以使用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" ) ); }

我想知道是否可以使用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" ) );
}
String imageName=“%3d”+“%s”;
对于(int i=0;i<1000;i++){
System.out.println(String.format(imageName,i,“foo”);
}

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

在整数的格式说明符中使用
%03d
0
表示如果数字少于三位(在本例中),则数字将以零填充

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

String.format(“%03d”,1)/=>“001”
//              │││   └── 打印数字1
//              ││└────── ... 作为十进制整数
//              │└─────── ... 至少3个字符宽
//              └──────── ... 用零代替空格填充

有关详细信息,请参阅。

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

使用apache的
StringUtils
类:


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

可能重复的StringUtils.leftPad()更快,因此,leftPad是另一个不错的选择,它更具可读性,并且允许您使用其他字符填充。我有一个谷歌,但我找不到任何东西证实它更快-你能提供一些证据吗?使用junit运行它并检查时间
int i = 5;
StringUtils.leftPad(String.valueOf(i), 3, "0"); // --> "005"