2014-09-03 20 views

risposta

92

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

+0

Cosa devo fare se il pad si trova a destra? usando la bandiera '-' dà solo spazi, ho bisogno di zeri. – majidarif

+1

Se si desidera utilizzare una stringa in un secondo momento, utilizzare 'Sprintf' invece di' Printf' – oliverpool

6

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 
+0

Eric Palmer ha rimosso il repository con campioni golang in modo che il collegamento non funzioni più. –

+1

@KonstantinAzizov Buon punto. Ho ripristinato quel collegamento. Una specie di. – VonC

0
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"

4

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:

  • Se l'ingresso è 1, l'uscita sarà 01.
  • Se l'ingresso è 12, l'uscita sarà 12.
  • Se l'ingresso è 1992 uscita sarà 1992.

È possibile utilizzare %03d o più per ulteriori zeri.

Problemi correlati