Formatear un entero usando el formato de cadena Java

Me pregunto si es posible, usando el método String.format en Java, para dar a un entero ceros anteriores.

Por ejemplo:

1 se convertiría en 001
2 se convertiría en 002

11 se convertiría en 011
12 se convertiría en 012

526 quedaría como 526
… etc

Por el momento, probé el siguiente código:

String imageName = "_%3d" + "_%s"; for( int i = 0; i < 1000; i++ ){ System.out.println( String.format( imageName, i, "foo" ) ); } 

Desafortunadamente, esto precede al número con 3 espacios vacíos. ¿Es posible preceder el número con ceros en su lugar?

Utilice %03d en el especificador de formato para el entero. El 0 significa que el número se llenará con cero si tiene menos de tres dígitos (en este caso).

Ver la documentación del Formatter para otros modificadores.

 String.format("%03d", 1); // => "001" // │││ └── print the number one // ││└────── ... as a decimal integer // │└─────── ... minimum of 3 characters wide // └──────── ... pad with zeroes instead of spaces 

Ver java.util.Formatter para más información.

Si está utilizando una biblioteca de terceros llamada apache commons-lang, la siguiente solución puede ser útil:

Utilice la clase StringUtils de apache commons-lang :

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

Como StringUtils.leftPad() es más rápido que String.format()