Voici la chaîne, par exemple:
"Apple"
et je voudrais ajouter zéro pour remplir 8 caractères:
"000Apple"
Comment puis-je le faire?
Voici la chaîne, par exemple:
"Apple"
et je voudrais ajouter zéro pour remplir 8 caractères:
"000Apple"
Comment puis-je le faire?
Au cas où vous deviez le faire sans l'aide d'une bibliothèque:
("00000000" + "Apple").substring("Apple".length())
(Fonctionne, tant que votre chaîne ne dépasse pas 8 caractères.)
("0000" + theString).substring(theString.length())
est plus réaliste. Cette garnituretheString
avec des zéros non significatifs. Désolé n'a pas pu résister à l'ajout de ce commentaire :)StringBuilder
, et il faut une boucle pour le remplir. Si l'exigence est vraiment de ne tronquer que les chaînes de 8 caractères, c'est bien, bien que ce soit un cas d'utilisation très restreint, mais cette solution ne peut jamais être appelée rapidement. C'est juste court.la source
%07s
au lieu de%07d
, vous obtiendrez un fichierFormatFlagsConversionMismatchException
. Tu peux l'essayer.Cela vient de commons-lang . Voir javadoc
la source
C'est ce qu'il demandait vraiment je crois:
production:
la source
DuplicateFormatFlagsException
(à cause de la00
chaîne de formatage). Si vous remplacez une chaîne de plus de 8 caractères, cela lève unIllegalFormatFlagsException
(à cause du nombre négatif).String.format("%0"+ (9 - "Apple".length() )+"d%s",0 ,"Apple").substring(0,8);
. Maintenant, vous n'aurez plus cette exception.String.format("%0"+ (9 - "Apple".length() )+"d%s",0 ,"Apple").substring(0,8);
c'est FAUX, ça devrait l'êtreString.format("%0"+ (9 - "Apple".length() )+"d%s",0 ,"Apple").substring(1,9);
.Vous pouvez utiliser la méthode String.format telle qu'utilisée dans une autre réponse pour générer une chaîne de 0,
Cela peut être appliqué à votre problème en ajustant dynamiquement le nombre de 0 non significatifs dans une chaîne de format:
C'est toujours une solution compliquée, mais a l'avantage que vous pouvez spécifier la longueur totale de la chaîne résultante en utilisant un argument entier.
la source
Utilisation de la
Strings
classe utilitaire de Guava :la source
Vous pouvez utiliser ceci:
la source
J'ai été dans une situation similaire et j'ai utilisé ceci; C'est assez concis et vous n'avez pas à vous occuper de la longueur ou d'une autre bibliothèque.
Simple et soigné. Le format de chaîne renvoie
" Apple"
donc après avoir remplacé l'espace par des zéros, il donne le résultat souhaité.la source
la source
Utilisez Apache Commons StringUtils.leftPad (ou regardez le code pour créer votre propre fonction).
la source
la source
Vous devrez peut-être prendre soin de l'Edgecase. C'est une méthode générique.
la source
la source
la source
En Java:
Dans Scala:
Vous pouvez également explorer un moyen dans Java 8 de le faire à l'aide de flux et de réduire (comme je l'ai fait avec Scala). C'est un peu différent de toutes les autres solutions et je l'aime particulièrement beaucoup.
la source
C'est rapide et fonctionne pour n'importe quelle longueur.
la source
Peut être plus rapide que la réponse de Chris Lercher lorsque la plupart des éléments de String ont exactement 8 caractères
dans mon cas sur ma machine 1/8 plus rapide.
la source
Voici la version simple de "script lisible" sans API que j'utilise pour le pré-remplissage d'une chaîne. (Simple, lisible et réglable).
la source
Quelqu'un a-t-il essayé cette solution Java pure (sans SpringUtils):
Malheureusement, cette solution ne fonctionne que si vous ne disposez pas d'espaces vides dans une chaîne.
la source
Si vous souhaitez écrire le programme en Java pur, vous pouvez suivre la méthode ci-dessous ou il existe de nombreux String Utils pour vous aider à mieux avec des fonctionnalités plus avancées.
En utilisant une méthode statique simple, vous pouvez y parvenir comme ci-dessous.
Vous pouvez utiliser la méthode ci-dessus
addLeadingText(length, padding text, your text)
La sortie serait 000Apple
la source
Ce n'est pas joli, mais ça marche. Si vous avez accès à apache commons, je vous suggère de l'utiliser
la source