Hier ist der String zum Beispiel:
"Apple"
und ich möchte Null hinzufügen, um 8 Zeichen auszufüllen:
"000Apple"
Wie kann ich das machen?
java
string
formatting
format
Roy
quelle
quelle
("0000" + theString).substring(theString.length())
ist realistischer. Diese PadstheString
mit führenden Nullen. Sorry konnte nicht widerstehen, diesen Kommentar hinzuzufügen :)StringBuilder
, und es dauert eine Schleife, um es zu füllen. Wenn die Anforderung wirklich darin besteht, nur Zeichenfolgen mit 8 Zeichen abzuschneiden, ist dies in Ordnung, obwohl dies ein sehr enger Anwendungsfall ist, aber diese Lösung kann niemals schnell aufgerufen werden. Es ist nur kurz.quelle
%07s
statt%07d
, erhalten Sie eineFormatFlagsConversionMismatchException
. du kannst es versuchen.Dies ist von commons-lang . Siehe Javadoc
quelle
Darum hat er wirklich gebeten, glaube ich:
Ausgabe:
quelle
DuplicateFormatFlagsException
(aufgrund der00
Zeichenfolge im Format) ausgegeben. Wenn Sie eine Zeichenfolge ersetzen, die länger als 8 Zeichen ist, wird einIllegalFormatFlagsException
(aufgrund der negativen Zahl) ausgegeben.String.format("%0"+ (9 - "Apple".length() )+"d%s",0 ,"Apple").substring(0,8);
. Jetzt haben Sie diese Ausnahme nicht mehr.String.format("%0"+ (9 - "Apple".length() )+"d%s",0 ,"Apple").substring(0,8);
ist FALSCH, es sollte seinString.format("%0"+ (9 - "Apple".length() )+"d%s",0 ,"Apple").substring(1,9);
.Sie können die in einer anderen Antwort verwendete String.format-Methode verwenden, um eine Zeichenfolge mit Nullen zu generieren.
Dies kann auf Ihr Problem angewendet werden, indem Sie die Anzahl der führenden Nullen in einer Formatzeichenfolge dynamisch anpassen:
Es ist immer noch eine unübersichtliche Lösung, hat aber den Vorteil, dass Sie die Gesamtlänge der resultierenden Zeichenfolge mithilfe eines ganzzahligen Arguments angeben können.
quelle
Verwenden der
Strings
Dienstprogrammklasse von Guava :quelle
Sie können dies verwenden:
quelle
Ich war in einer ähnlichen Situation und habe diese genutzt. Es ist ziemlich prägnant und Sie müssen sich nicht mit der Länge oder einer anderen Bibliothek befassen.
Einfach und ordentlich. Das Zeichenfolgenformat wird zurückgegeben,
" Apple"
sodass nach dem Ersetzen des Leerzeichens durch Nullen das gewünschte Ergebnis erzielt wird.quelle
quelle
Verwenden Sie Apache Commons StringUtils.leftPad (oder sehen Sie sich den Code an, um Ihre eigene Funktion zu erstellen).
quelle
quelle
Möglicherweise müssen Sie sich um Edgecase kümmern. Dies ist eine generische Methode.
quelle
quelle
quelle
In Java:
In Scala:
Sie können auch eine Möglichkeit in Java 8 untersuchen, dies mithilfe von Streams zu tun und zu reduzieren (ähnlich wie bei Scala). Es ist ein bisschen anders als alle anderen Lösungen und ich mag es besonders.
quelle
Dies ist schnell und funktioniert für jede Länge.
quelle
Kann schneller sein als Chris Lercher antwortet, wenn die meisten in String genau 8 Zeichen haben
in meinem Fall auf meiner Maschine 1/8 schneller.
quelle
Hier ist die einfache API-freie "lesbare Skript" -Version, die ich zum Vorpolstern eines Strings verwende. (Einfach, lesbar und einstellbar).
quelle
Hat jemand diese reine Java-Lösung (ohne SpringUtils) ausprobiert:
Leider funktioniert diese Lösung nur, wenn Sie keine Leerzeichen in einer Zeichenfolge haben.
quelle
Wenn Sie das Programm in reinem Java schreiben möchten, können Sie die folgende Methode anwenden, oder es gibt viele String-Utils, die Ihnen bei erweiterten Funktionen helfen.
Mit einer einfachen statischen Methode können Sie dies wie folgt erreichen.
Sie können die obige Methode verwenden
addLeadingText(length, padding text, your text)
Die Ausgabe wäre 000Apple
quelle
Es ist nicht schön, aber es funktioniert. Wenn Sie Zugriff auf Apache Commons haben, würde ich vorschlagen, dass Sie das verwenden
quelle