Rubyのprintfメソッドについて、簡単な使い方をまとめました。
printfメソッドとは
- 文字列の整形に使えるメソッド
- フォーマットに従って文字列を出力する
使い方
printf("(A)こんな感じで出したい文字列", (B)引数)
- Aには「最終的にこんな形で文字列を出力したいなぁ」という最終形態を入れる
- Bの引数には、Aに対応する文字を設定する
- Aの数に対応して増減する
作成例1
printf("%d %d\n", 10, 20) => 10 20
%文字
という形式で指定する- 文字のほうを指示子と呼ぶ
%d
は「整数を10進数で出力する」という意味- この場合、「最初の
%d
には10を、次のやつには20を入れて出力してね」という意味 - printfは改行しないので、自分で改行文字
\n
を入れてやる必要がある
作成例2
引数には、変数を使うこともできる。
n1 = 10 n2 = 20 printf("%d %d\n", n1, n2) => 10 20
というか基本的にこんな使い方が多いのかも。
指示子の種類
指示子 | 意味 |
---|---|
%c | コードポイントに対応する文字を出力 |
%s | 文字列を出力 |
%p | pメソッドと同じ形式で出力 |
%b, %B | 整数を2進数で出力 |
%o | 整数を8進数で出力 |
%d, %i | 整数を10進数で出力 |
%x, %X | 整数を16進数で出力 |
%f | 浮動小数点数を出力 |
%e | 浮動小数点数を指数表現で出力 |
%% | %そのものを出力 |
他にもいろんな指定方法がある
%と指示子のあいだに数値や記号を入れることで、表現が広がる。 これらを単体でも、複数組み合わせても使える。
記号 | 意味 |
---|---|
# | %b,B,o,x,Xについて、リテラル表現と同じプレフィックスを出力 |
- | 幅を指定した場合に出力を左寄せにする |
+ | +か-の符号を出力 |
空白 | 負の数のときのみ符号「-」を出力 |
0 | 最小幅を指定する際に余った桁を空白ではなく0で埋める |
数値 | 幅の指定 |
・%#b
# 2進数にプレフィックスをつける printf("%#b %#b\n", 10, 20) => 0b1010 0b10100
・%#x
# 16進数にプレフィックスをつける printf("%#x %#x\n", 10, 20) => 0xa 0x14
・%-数値
# 幅を指定したときに左寄せ printf("%-10b %-10b\n", 10, 20) => 1010 10100
・%+
# +をつける printf("%+b %+b\n", 10, 20) => +1010 +10100
・%(空白)
# 負の数なら「-」が出力 printf("% b % b\n", -10, -20) => -1010 -10100
ちなみに空白を消すとこうなる。
printf("%b %b\n", -10, -20) => ..10110 ..101100
・%0
# 桁を0で埋める printf("%04d %04d\n", 10, 20) => 0010 0020
4という幅を指定すると4桁になり、その左を0で埋めている。 0を指定せず、4の幅だけ指定するとこうなる。
printf("%4d %4d\n", 10, 20) => 10 20
さらに詳しい指定方法はリファレンスでチェック。