funciona como java string-formatting number-formatting

como - Formatee un entero utilizando Java String Format



string.format java double (3)

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

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 permanecerían 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?


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()


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

Ver los documentos de 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.