Just do IT

思うは招く

[Ruby] printfメソッドの使い方と例

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

さらに詳しい指定方法はリファレンスでチェック。

docs.ruby-lang.org