J'ai vu des questions similaires ici et ici .
Mais je n'arrive pas à trouver le moyen de remplacer une chaîne par un zéro.
entrée : "129018" sortie : "0000129018"
La longueur totale de la sortie doit être TEN.
Si votre chaîne de caractères ne contient que des chiffres, vous pouvez en faire un nombre entier, puis effectuer un remplissage :
String.format("%010d", Integer.parseInt(mystring));
Si ce n'est pas le cas Je voudrais savoir comment faire. .
Je m'arrachais les cheveux parce que je n'avais pas vu que je devais exécuter la fonction Integer.parseInt().
En outre, pour ceux qui souhaitent compléter leurs nombres/chaînes par quelque chose qui n'est pas "0", modifiez l'attribut %0
à %yourchoice
.
Juste un mot d'avertissement : Cette solution n'a pas fonctionné pour les grands nombres entiers (ex : "9999999999") ; j'ai donc opté pour la solution d'Oliver Michels utilisant Apache commons.
Juste pour rappel... String
est immuable (voir Une chaîne est immuable. Quelle en est la signification exacte ? ), donc StringUtils.leftPad(variable, 10, "0");
ne changera pas le variable
La valeur de l'entreprise. Vous devrez lui assigner le résultat, comme ceci : variable = StringUtils.leftPad(variable, 10, "0");
.
Cette méthode permet de remplir n'importe quelle chaîne de caractères jusqu'à une largeur totale de 10 sans se soucier des erreurs d'analyse :
String unpadded = "12345";
String padded = "##########".substring(unpadded.length()) + unpadded;
//unpadded is "12345"
//padded is "#####12345"
Si tu veux faire du remplissage à droite :
String unpadded = "12345";
String padded = unpadded + "##########".substring(unpadded.length());
//unpadded is "12345"
//padded is "12345#####"
Vous pouvez remplacer les caractères "#" par le caractère de votre choix, répété le nombre de fois que vous souhaitez que la largeur totale de la chaîne soit atteinte. Par exemple, si vous voulez ajouter des zéros à gauche pour que la chaîne entière fasse 15 caractères :
String unpadded = "12345";
String padded = "000000000000000".substring(unpadded.length()) + unpadded;
//unpadded is "12345"
//padded is "000000000012345"
L'avantage de cette méthode par rapport à la réponse de khachik est qu'elle n'utilise pas Integer.parseInt, qui peut déclencher une exception (par exemple, si le nombre que vous voulez compléter est trop grand, comme 12147483647). L'inconvénient est que si le nombre que vous voulez compléter est déjà un int, vous devrez le convertir en String et inversement, ce qui n'est pas souhaitable.
Donc, si vous êtes sûr qu'il s'agit d'un int, la réponse de khachik fonctionne très bien. Sinon, voici une stratégie possible.
Il peut être nécessaire de faire attention à la longueur de la chaîne de caractères qui est complétée - l'appel à substring() peut provoquer une exception IndexOutOfBoundsException.
Plus les performances ? Je pense que cela crée 3 cordes différentes, si je ne me trompe pas.
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.