web-dev-qa-db-fra.com

Formater un entier en utilisant Java Format de chaîne

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?

116
My Head Hurts

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

Voir le Formatter docs pour les autres modificateurs.

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

Voir Java.util.Formatter pour plus d'informations.

194
maerics

Si vous utilisez une bibliothèque tierce appelée Apache commons-lang, la solution suivante peut être utile:

Utilisez StringUtils classe d'Apache commons-lang :

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

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

10
Anil Bharadia