printf のフォーマットの例
printf で文字の整列などをすれば楽ちんだろうとは思うんだけど、なかなか覚えきれないので、いくつか例を以て覚えておきたい。
takuya@Desktop$ ruby /Users/takuya/printf_examples.sh prinft %d 32 => '32 ' # 数字 prinft %5d 32 => ' 32' # 右寄せ prinft %-5d 32 => '32 ' # 左寄せ prinft %04d 32 => '0032 ' # 0埋め prinft %-05d 32 => '32 ' # 0埋め+左寄せ prinft %+d 32 => '+32 ' # 符号(+) prinft %+d -32 => '-32 ' # 符号(-) prinft %.1f -32 => '-32.0' # 小数桁1 prinft %.2f 32 => '32.00' # 小数桁2 prinft %#x 32 => '0x20 ' # 16進数 prinft %#o 32 => '040 ' # 8進数 prinft %#b 32 => '0b100000' # 2進数 prinft %#08b 7 => '0b000111' # 2進数0埋め
使ったソースコード
#!/usr/bin/env ruby formats = { '数字' => [ "%d", 32 ], '右寄せ' => [ "%5d", 32 ], '左寄せ' => [ "%-5d", 32 ], '0埋め' => [ "%04d", 32 ], '0埋め+左寄せ' => [ "%-05d", 32 ], '符号(+)' => [ "%+d", 32 ], '符号(-)' => [ "%+d", -32 ], '小数桁1' => [ "%.1f", -32 ], '小数桁2' => [ "%.2f", 32 ], '16進数' => [ "%#x", 32 ], ' 8進数' => [ "%#o", 32 ], ' 2進数' => [ "%#b", 32 ], ' 2進数0埋め' => [ "%#08b", 7 ], # '金額' => [ "%'d", 32 ], not supported } for k, e in formats do f = e[0] v = e[1] printf( "prinft %-5s %4s => '%-5s' # %-5s \n" , f, v , f%v, k ) end