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?
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.
_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.
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()