Wie können Sie int
beim Konvertieren in a String
in Java ein Pad mit Nullen belassen ?
Ich versuche im Grunde, ganze Zahlen 9999
mit führenden Nullen (z 0001
. B. 1 = ) aufzufüllen .
java
formatting
zero-pad
Omar Kooheji
quelle
quelle
new String(Integer.toString(num + 10000)).substring(1)
Ansatz, wenn ernum
größer als 9999 ist, ijs.Antworten:
Verwenden Sie
java.lang.String.format(String,Object...)
wie folgt:für Null-Padding mit einer Länge von 5. Für hexadezimale Ausgabe ersetzen Sie das
d
durch einx
wie in"%05x"
.Die vollständigen Formatierungsoptionen sind als Teil von dokumentiert
java.util.Formatter
.quelle
String.format
printf () in C ähnlich sind?%012d
%d can't format java.lang.String arguments
Sagen wir , Sie drucken möchten
11
als011
Sie könnten einen Formatierer verwenden :
"%03d"
.Sie können diesen Formatierer folgendermaßen verwenden:
Alternativ unterstützen einige Java-Methoden diese Formatierer direkt:
quelle
F
von format () sollte seinf
:String.format(...);
.int prefixLength = requiredTotalLength - String.valueOf(numericValue).length
) und verwende dann eine Wiederholungszeichenfolgenmethode, um das erforderliche Präfix zu erstellen. Es gibt verschiedene Möglichkeiten, Zeichenfolgen zu wiederholen, aber es gibt keine native Java-Zeichenfolge, afaik: stackoverflow.com/questions/1235179/…Wenn Sie aus irgendeinem Grund Java vor 1.5 verwenden, versuchen Sie es möglicherweise mit der Apache Commons Lang-Methode
quelle
Fand dieses Beispiel ... Wird testen ...
Getestet und:
Beide funktionieren, für meine Zwecke denke ich, dass String.Format besser und prägnanter ist.
quelle
Wenn die Leistung in Ihrem Fall wichtig ist, können Sie dies mit weniger Aufwand im Vergleich zur
String.format
Funktion selbst tun :Performance
Ergebnis
Eigene Funktion: 1697ms
String.format: 38134ms
quelle
for( int i : data ) strData += (i > 9 ? (i > 99 ? "" : "0") : "00") + Integer.toString( i ) + "|";
Das hat sehr schnell funktioniert (sorry, ich habe es nicht zeitlich festgelegt!).Sie können Google Guava verwenden :
Maven:
Beispielcode:
Hinweis:
Guava
sehr nützliche Bibliothek ist, bietet es auch viele Funktionen, die im ZusammenhangCollections
,Caches
,Functional idioms
,Concurrency
,Strings
,Primitives
,Ranges
,IO
,Hashing
,EventBus
, usw.Ref: GuavaErläutert
quelle
Probier diese:
quelle
Obwohl viele der oben genannten Ansätze gut sind, müssen wir manchmal sowohl Ganzzahlen als auch Gleitkommazahlen formatieren. Wir können dies verwenden, insbesondere wenn wir eine bestimmte Anzahl von Nullen links und rechts von Dezimalzahlen auffüllen müssen.
quelle
Wenn Sie den formatierten Text direkt auf den Bildschirm drucken möchten.
quelle
String.format
undSystem.out.format
rufen Sie die gleichejava.util.Formatter
Implementierung auf.Verwenden Sie die Klasse DecimalFormat wie folgt:
AUSGABE: 0000811
quelle
So können Sie Ihre Zeichenfolge ohne Verwendung formatieren
DecimalFormat
.String.format("%02d", 9)
String.format("%03d", 19)
String.format("%04d", 119)
quelle
Überprüfen Sie meinen Code, der für Ganzzahl und Zeichenfolge funktioniert.
Angenommen, unsere erste Zahl ist 2. Und wir möchten Nullen hinzufügen, damit die Länge der letzten Zeichenfolge 4 beträgt. Dafür können Sie den folgenden Code verwenden
quelle
(new char[diff])
warumreplace("\0", "0")
was ist ... wasSie müssen einen Formatierer verwenden. Der folgende Code verwendet NumberFormat
quelle
Das einzige Problem bei diesem Ansatz ist, dass Sie Ihren Denkhut aufsetzen müssen, um herauszufinden, wie er funktioniert.
quelle
number
oder mit einemwidth
Keine Pakete erforderlich:
Dadurch wird die Zeichenfolge auf drei Zeichen aufgefüllt, und es ist einfach, einen weiteren Teil für vier oder fünf Zeichen hinzuzufügen. Ich weiß, dass dies in keiner Weise die perfekte Lösung ist (besonders wenn Sie eine große gepolsterte Saite wollen), aber ich mag es.
quelle