使用Java字符串格式格式化整数
我想知道是否可以使用Java中的String.format方法在零之前给出一个整数 例如: 1将变成001使用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" ) ); }
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"