Comment avez-vous laissé un pad int
avec des zéros lors de la conversion String
en Java?
Je cherche essentiellement à remplir les entiers 9999
avec des zéros non significatifs (par exemple 1 = 0001
).
java
formatting
zero-pad
Omar Kooheji
la source
la source
new String(Integer.toString(num + 10000)).substring(1)
approche if quinum
est supérieure à 9999, ijs.Réponses:
Utilisez
java.lang.String.format(String,Object...)
comme ceci:pour un remplissage nul avec une longueur de 5. Pour une sortie hexadécimale, remplacez le
d
par unx
comme dans"%05x"
.Les options de formatage complètes sont documentées dans le cadre de
java.util.Formatter
.la source
String.format
de s'apparentent à printf () en C?%012d
%d can't format java.lang.String arguments
Disons que vous voulez imprimer
11
en011
Vous pouvez utiliser un formatter :
"%03d"
.Vous pouvez utiliser ce formateur comme ceci:
Alternativement, certaines méthodes java prennent directement en charge ces formateurs:
la source
F
format () doit êtref
:String.format(...);
.int prefixLength = requiredTotalLength - String.valueOf(numericValue).length
), puis j'utilise une méthode de chaîne de répétition pour créer le préfixe requis. Il existe différentes façons de répéter des chaînes, mais il n'y en a pas de natif java, afaik: stackoverflow.com/questions/1235179/…Si pour quelque raison que ce soit, vous utilisez Java 1.5, vous pouvez essayer avec la méthode Apache Commons Lang
la source
Trouvé cet exemple ... Testera ...
Testé cela et:
Les deux fonctionnent, pour moi, je pense que String.Format est meilleur et plus succinct.
la source
Si les performances sont importantes dans votre cas, vous pouvez le faire vous-même avec moins de frais généraux par rapport à la
String.format
fonction:Performance
Résultat
Fonction propre: 1697ms
String.format: 38134ms
la source
for( int i : data ) strData += (i > 9 ? (i > 99 ? "" : "0") : "00") + Integer.toString( i ) + "|";
cela a fonctionné très rapidement (désolé, je ne l'ai pas chronométré!).Vous pouvez utiliser Google Guava :
Maven:
Exemple de code:
Remarque:
Guava
est une bibliothèque très utile, il fournit également de nombreuses fonctionnalités qui se rapportent àCollections
,Caches
,Functional idioms
,Concurrency
,Strings
,Primitives
,Ranges
,IO
,Hashing
,EventBus
, etc.Réf: GuavaExplained
la source
Essaye celui-là:
la source
Bien que la plupart des approches ci-dessus soient bonnes, nous devons parfois formater des entiers ainsi que des flottants. Nous pouvons l'utiliser, en particulier lorsque nous devons remplir un nombre particulier de zéros à gauche ainsi qu'à droite des nombres décimaux.
la source
si vous souhaitez imprimer le texte formaté directement sur l'écran.
la source
String.format
etSystem.out.format
appelez la mêmejava.util.Formatter
implémentation.Utilisez la classe DecimalFormat, comme ceci:
SORTIE: 0000811
la source
Voici comment formater votre chaîne sans utiliser
DecimalFormat
.String.format("%02d", 9)
String.format("%03d", 19)
String.format("%04d", 119)
la source
Vérifiez mon code qui fonctionnera pour l'entier et la chaîne.
Supposons que notre premier nombre soit 2. Et nous voulons ajouter des zéros à cela pour que la longueur de la chaîne finale soit 4. Pour cela, vous pouvez utiliser le code suivant
la source
(new char[diff])
pourquoireplace("\0", "0")
qu'est-ce que ... quoiVous devez utiliser un formateur, le code suivant utilise NumberFormat
la source
Le seul problème avec cette approche est qu'elle vous oblige à mettre votre chapeau de réflexion pour comprendre comment cela fonctionne.
la source
number
ou avec unwidth
supérieur à 18.Aucun package requis:
Cela remplira la chaîne de trois caractères, et il est facile d'ajouter une partie supplémentaire pour quatre ou cinq. Je sais que ce n'est en aucun cas la solution parfaite (surtout si vous voulez une grosse corde rembourrée), mais j'aime ça.
la source