Bagaimana cara mencetak angka atau membuat string dengan bantalan nol agar lebarnya tetap?
Misalnya, jika saya punya nomor 12
dan saya ingin membuatnya 000012
.
Paket fmt dapat melakukan ini untuk Anda:
fmt.Printf("|%06d|%6d|\n", 12, 345)
Perhatikan 0 dalam% 06d, yang akan membuatnya menjadi lebar 6 dan mengisinya dengan nol. Yang kedua akan diisi dengan spasi.
Anda dapat melihatnya beraksi di sini: http://play.golang.org/p/cinDspMccp
-
hanya memberi spasi, saya butuh nol.Sprintf
sebagai penggantiPrintf
Gunakan
Printf
fungsi dari paket fmt dengan awidth
of6
dan karakter padding0
:Mengatur
width
karya dengan meletakkan integer tepat sebelum penentu format ('verb'):Karakter pengisi yang didukung oleh Golang (dan sebagian besar bahasa lainnya) adalah spasi dan
0
:Anda dapat membenarkan pencetakan dengan menambahkan tanda minus
-
:Berhati-hatilah karena untuk bilangan floating point, lebarnya mencakup seluruh format string:
Penting untuk diperhatikan bahwa lebar juga dapat disetel secara terprogram dengan menggunakan
*
sebagai ganti angka dan meneruskan lebar sebagaiint
parameter:Ini mungkin berguna misalnya jika nilai terbesar yang ingin Anda cetak hanya diketahui saat runtime (disebut
maxVal
dalam contoh berikut):Terakhir, jika Anda tidak ingin mencetak
stdout
tetapi mengembalikan String, gunakanSprintf
juga dari paket fmt dengan parameter yang sama:sumber
Ada satu cara termudah untuk mencapai ini. Menggunakan
fmt.Sprintf
memformat dan mengembalikan string tanpa mencetaknya di mana pun. Di sini%02d
tertulis pad nol di kiri untuk nilai yang memiliki <2 jumlah digit. Jika nilai yang diberikan memiliki 2 digit atau lebih, itu tidak akan pad. Sebagai contoh:Anda dapat menggunakan
%03d
atau lebih untuk lebih banyak pengisi nol.sumber
Pertanyaan " Daftar format pencetakan di Go lang " mengingatkan kita bahwa ada juga benderanya:
Anda dapat melihat lebih banyak contoh padding dengan
DaddyOh/golang-samples/pad.go
, jika Anda ingin padding dengan urutan string lain (lebih kompleks daripada '0
' atau ''):
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)
Lihat play.golang.org:
sumber
lpad ("3", "0", 2) hasil: "03"
lpad ("12", "0", 6) hasil: "000012"
sumber