💎

Ruby sprintfについて

2024/04/20に公開

概要

Rubyのsprintfについてまとめる

sprintfとは?

文字列をフォーマットしてくれる。

構文

sprintf(%[フラグ][幅][.精度]指示子, フォーマットしたい値)
[]は省略可能な項目です

フラグ

#, +, (半角スペース), -, 0の5種類がある。

意味
(半角スペース) 半角スペース埋め。省略可。
0 0埋め
- 左詰めで表示
+ 正負の符号を表示

フォーマット後の文字列の長さを指定。

精度

指示子が小数(f)の場合は、小数点以下の桁数を指定。
整数(bなど)の場合は、数値部分の桁数を指定。幅の残り分は空白で埋められる(例を参照してください)

指示子

型を指定。

意味
s 文字列
d 整数(10進数)
f 小数
e 指数

p sprintf("%+8.5d", 123) # " +00123"

項目
フラグ +
8
精度 .5
指示子 d

フォーマット例

右詰めで出力

# 空白埋め
p sprintf('% 5d', 123) # "  123"
# 0埋め
p sprintf('%05d', 123) # "00123"

左詰めで出力

# "-"を指定
p sprintf('%-5d', 123) # "123  "

符号付きで出力

# "+"を指定
p sprintf('%+5d', 123) # " +123"

前後に文字列を付ける

p sprintf("%04d番です", 123) # "0123番です"

小数点を扱う

# (空白):空白埋め
# 8:8文字分の幅を取る(小数点"."も含む)
# .2:小数点以下2桁まで表示
# f:小数を扱う
p sprintf("% 8.2f", 123) # "  123.00"

整数を0埋めと空白埋めと符号付き

p sprintf("%0+8.4d", 123) # "   +0123"

リファレンス

https://docs.ruby-lang.org/ja/latest/method/Kernel/m/format.html

Discussion