Come posso stampare un numero o creare una stringa con padding zero per renderlo a larghezza fissa?Come tamponare un numero con zeri durante la stampa?
Per esempio, se ho il numero 12
e voglio farlo 000012
.
Come posso stampare un numero o creare una stringa con padding zero per renderlo a larghezza fissa?Come tamponare un numero con zeri durante la stampa?
Per esempio, se ho il numero 12
e voglio farlo 000012
.
Il pacchetto FMT può fare questo per voi:
fmt.Printf("|%06d|%6d|\n", 12, 345)
Avviso del 0% in 06D, che lo renderà una larghezza di 6 e pad con gli zeri. Il secondo si riempirà di spazi.
Potete vederlo in azione qui: http://play.golang.org/p/cinDspMccp
La domanda "List of printing format in Go lang" ci ricorda che c'è anche la bandiera:
-
pad con spazi a destra piuttosto che a sinistra (a sinistra -justify campo)
È possibile vedere più esempi imbottitura con DaddyOh/golang-samples/pad.go
, se si vuole pad con altre sequenze di stringa (più complesso di '0
' o ''):
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)
See play.golang.org:
1234567890
leftPad(str, "*", 3) ***1234567890
leftPad2Len(str, "*-", 13) -*-1234567890
leftPad2Len(str, "*-", 14) *-*-1234567890
leftPad2Len(str, "*", 14) ****1234567890
leftPad2Len(str, "*-x", 14) x*-x1234567890
leftPad2Len(str, "ABCDE", 14) BCDE1234567890
leftPad2Len(str, "ABCDE", 4) 7890
rightPad(str, "*", 3) 1234567890***
rightPad(str, "*!", 3) 1234567890*!*!*!
rightPad2Len(str, "*-", 13) 1234567890*-*
rightPad2Len(str, "*-", 14) 1234567890*-*-
rightPad2Len(str, "*", 14) 1234567890****
rightPad2Len(str, "*-x", 14) 1234567890*-x*
rightPad2Len(str, "ABCDE", 14) 1234567890ABCD
rightPad2Len(str, "ABCDE", 4) 1234
Eric Palmer ha rimosso il repository con campioni golang in modo che il collegamento non funzioni più. –
@KonstantinAzizov Buon punto. Ho ripristinato quel collegamento. Una specie di. – VonC
func lpad(s string,pad string, plength int)string{
for i:=len(s);i<plength;i++{
s=pad+s
}
return s
}
lpad ("3", "0", 2) risultato: "03"
lpad ("12", "0", 6) risultato: "000012"
C'è un modo più semplice per raggiungere questo obiettivo. Utilizzare
func padNumberWithZero(value uint32) string {
return fmt.Sprintf("%02d", value)
}
fmt.Sprintf
formati e restituisce una stringa senza stamparlo da nessuna parte. Qui %02d
dice pad zero a sinistra per valore che ha < 2 numero di cifre. Se il valore dato ha 2 o più cifre, non lo farà. Ad esempio:
È possibile utilizzare %03d
o più per ulteriori zeri.
Cosa devo fare se il pad si trova a destra? usando la bandiera '-' dà solo spazi, ho bisogno di zeri. – majidarif
Se si desidera utilizzare una stringa in un secondo momento, utilizzare 'Sprintf' invece di' Printf' – oliverpool