Reputation: 37665
I am wondering if it is possible, using the String.format method in Java, to give an integer preceding zeros?
For example:
1 would become 001
2 would become 002
...
11 would become 011
12 would become 012
...
526 would remain as 526
...etc
At the moment I have tried the following code:
String imageName = "_%3d" + "_%s";
for( int i = 0; i < 1000; i++ ){
System.out.println( String.format( imageName, i, "foo" ) );
}
Unfortunately, this precedes the number with 3 empty spaces. Is it possible to precede the number with zeros instead?
Upvotes: 149
Views: 351210
Reputation: 1
Instead of using String.format(**). it's good if you use DecimalFormat java API which builds for this type of purposes.Let me explain with code
String pattern = "000";
double value = 12; //can be 536 or any
DecimalFormat formatter = new DecimalFormat(pattern);
String formattedNumber = formatter.format(value);
System.out.println("Number:" + value + ", Pattern:" +
pattern + ", Formatted Number:" +
formattedNumber);
Upvotes: 0
Reputation: 156384
String.format("%03d", 1) // => "001"
// │││ └── print the number one
// ││└────── ... as a decimal integer
// │└─────── ... minimum of 3 characters wide
// └──────── ... pad with zeroes instead of spaces
See java.util.Formatter
for more information.
Upvotes: 246
Reputation: 2820
If you are using a third party library called apache commons-lang, the following solution can be useful:
Use StringUtils
class of apache commons-lang :
int i = 5;
StringUtils.leftPad(String.valueOf(i), 3, "0"); // --> "005"
As StringUtils.leftPad()
is faster than String.format()
Upvotes: 13