My Head Hurts
My Head Hurts

Reputation: 37665

Format an Integer using Java String Format

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

Answers (4)

Munawar Abbas
Munawar Abbas

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

maerics
maerics

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

Anil Bharadia
Anil Bharadia

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

Mat
Mat

Reputation: 206679

Use %03d in the format specifier for the integer. The 0 means that the number will be zero-filled if it is less than three (in this case) digits.

See the Formatter docs for other modifiers.

Upvotes: 184

Related Questions