回答:
fmtパッケージはこれを行うことができます:
fmt.Printf("|%06d|%6d|\n", 12, 345)
%06dの0に注目してください。これにより、幅が6になり、ゼロが埋め込まれます。2つ目はスペースで埋められます。
あなたはここでそれを実際に見ることができます:http : //play.golang.org/p/cinDspMccp
Sprintf
の代わりにPrintf
使用Printf
から機能をFMTパッケージでwidth
の6
パディング文字0
:
import "fmt"
fmt.Printf("%06d", 12) // Prints to stdout '000012'
width
書式指定子( '動詞')の直前に整数を置くことで動作を設定します。
fmt.Printf("%d", 12) // Uses default width, prints '12'
fmt.Printf("%6d", 12) // Uses a width of 6 and left pads with spaces, prints ' 12'
Golang(および他のほとんどの言語)でサポートされているパディング文字はスペースと0
:
fmt.Printf("%6d", 12) // Default padding is spaces, prints ' 12'
fmt.Printf("%06d", 12) // Change to 0 padding, prints '000012'
マイナスを付加することにより、印刷を右揃えにすることができます-
。
fmt.Printf("%-6d", 12) // Padding right-justified, prints '12 '
浮動小数点数の場合、幅にはフォーマット文字列全体が含まれることに注意してください。
fmt.Printf("%6.1f", 12.0) // Prints '0012.0' (width is 6, precision is 1 digit)
幅を*
数値の代わりに使用し、幅をint
パラメーターとして渡すことにより、プログラムで設定することもできます。
myWidth := 6
fmt.Printf("%0*d", myWidth, 12) // Prints '000012' as before
これは、たとえば、印刷したい最大値が実行時にしか分からない場合に役立ちます(maxVal
次の例で呼び出されます)。
myWidth := 1 + int(math.Log10(float64(maxVal)))
fmt.Printf("%*d", myWidth, nextVal)
最後に、出力したくないstdout
が文字列を返す場合は、同じパラメータを使用Sprintf
してfmtパッケージからも使用します。
s := fmt.Sprintf("%06d", 12) // returns '000012' as a String
これを実現する最も簡単な方法が1つあります。使用する
func padNumberWithZero(value uint32) string {
return fmt.Sprintf("%02d", value)
}
fmt.Sprintf
文字列をどこにも出力せずにフォーマットして返します。ここで%02d
は、桁数が2未満の値の左側にゼロを埋め込んでいます。与えられた値が2桁以上の場合、パディングされません。例えば:
%03d
より多くのゼロのパディングには、以上を使用できます。
「Go langの印刷形式のリスト」という質問は、フラグもあることを思い出させます。
-
左側ではなく右側にスペースを埋め込む(フィールドを左揃えにする)
DaddyOh/golang-samples/pad.go
他の文字列シーケンス( ' 0
'または ' ' より複雑)でパディングしたい場合は、でより多くのパディングの例を見ることができます。
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)
を参照してください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
-
スペースしか得られません。ゼロが必要です。