Wie kann ich eine Zahl drucken oder eine Zeichenfolge ohne Auffüllen erstellen, um eine feste Breite zu erzielen?
Zum Beispiel, wenn ich die Nummer habe 12
und sie machen möchte 000012
.
Das fmt-Paket kann dies für Sie tun:
fmt.Printf("|%06d|%6d|\n", 12, 345)
Beachten Sie die 0 in% 06d, die eine Breite von 6 ergibt, und füllen Sie sie mit Nullen auf. Der zweite wird mit Leerzeichen aufgefüllt.
Sie können es hier in Aktion sehen: http://play.golang.org/p/cinDspMccp
-
ich das Flag benutze, gibt es nur Leerzeichen, ich brauche Nullen.Sprintf
anstelle vonPrintf
Verwenden Sie die
Printf
Funktion aus dem fmt-Paket mit einemwidth
von6
und dem Füllzeichen0
:Festlegen der
width
Werke durch Setzen einer Ganzzahl direkt vor dem Formatbezeichner ('Verb'):Die einzigen von Golang (und den meisten anderen Sprachen) unterstützten Füllzeichen sind Leerzeichen und
0
:Es ist möglich, den Druck durch Voranstellen eines Minus richtig zu begründen
-
:Beachten Sie, dass bei Gleitkommazahlen die Breite die gesamte Formatzeichenfolge enthält:
Es ist nützlich zu beachten, dass die Breite auch programmgesteuert eingestellt werden kann, indem
*
anstelle einer Zahl die Breite alsint
Parameter übergeben wird:Dies kann beispielsweise nützlich sein, wenn der größte Wert, den Sie drucken möchten, nur zur Laufzeit bekannt ist (
maxVal
im folgenden Beispiel aufgerufen ):Wenn Sie nicht drucken möchten,
stdout
sondern einen String zurückgeben möchten , verwenden SieSprintf
auch das Paket fmt mit denselben Parametern:quelle
Es gibt einen einfachsten Weg, dies zu erreichen. Verwenden
fmt.Sprintf
formatiert und gibt eine Zeichenfolge zurück, ohne sie irgendwo zu drucken. Hier%02d
steht links Pad Null für einen Wert mit <2 Ziffern. Wenn der angegebene Wert 2 oder mehr Ziffern hat, wird er nicht aufgefüllt. Beispielsweise:Sie können
%03d
oder mehr für mehr Nullen verwenden.quelle
Die Frage " Liste der Druckformate in Go lang " erinnert uns daran, dass es auch die Flagge gibt:
Sie können weitere Auffüllbeispiele mit sehen
DaddyOh/golang-samples/pad.go
, wenn Sie mit anderen Zeichenfolgenfolgen auffüllen möchten (komplexer als '0
' oder ''):
leftPad(s string, padStr string, pLen int)
rightPad(s string, padStr string, pLen int)
leftPad2Len(s string, padStr string, overallLen int)
rightPad2Len(s string, padStr string, overallLen int)
Siehe play.golang.org:
quelle
lpad ("3", "0", 2) Ergebnis: "03"
lpad ("12", "0", 6) Ergebnis: "000012"
quelle