137 votes

Formater un entier en utilisant le format de chaîne Java

Je me demande s’il est possible, en utilisant la méthode String.format en Java, de donner un entier précédant les zéros?

Par exemple:

1 deviendrait 001
2 deviendrait 002
...
11 deviendrait 011
12 deviendrait 012
...
526 resterait en tant que 526
...etc

Pour le moment, j'ai essayé le code suivant:

 String imageName = "_%3d" + "_%s";

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

Malheureusement, cela précède le nombre avec 3 espaces vides. Est-il possible de faire précéder le nombre avec des zéros?

228voto

maerics Points 47743
String.format("%03d", 1); // => "001"

179voto

Mat Points 104488

Utilisez %03d dans le spécificateur de format pour l'entier. Le 0 signifie que le nombre sera rempli de zéros s'il est inférieur à trois (dans ce cas) chiffres.

Voir les Formatter docs pour les autres modificateurs.

13voto

Anil Bharadia Points 450

Utilisez StringUtils class apache commons-lang :

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

As StringUtils.leftPad() est plus rapide que String.format()

0voto

Joshua Points 302

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X