📝

Ruby 数字の頭に0とか+とかつけたいな...そんな時はsprintfメソッド使おう!

2023/06/29に公開

今日のアウトプットはsprintfメソッドについてです。
ちょっと難解ですが、使い方のパターンがわかると文字列操作の幅が広がるメソッドかと思います。

使い方

書き方はsprintf( "フォーマット", 戻したい値 )という形式です。
このフォーマットの部分にフラグ、幅、指示子などを指定していきますが、これがちょっと難解。
ですので、使用例から学んでいくのが良いかなと思います。

s = 123

# 数字の頭に0をつけて4桁で表示する
# フラグ:0、幅、4、指示子:d(10進表現の整数)
irb(main):009:0> str = sprintf("%04d", s)
=> "0123"

# 数字の頭に+をつけて表示する
# フラグ:+、幅:指定なし、指示子:d
irb(main):010:0> str = sprintf("%+d", s)
=> "+123"

# 数字を5桁の右詰めにする
# フラグ:なし、幅:5、指示子:d
irb(main):011:0> str = sprintf("%5d", s)
=> "  123"

# 数字を5桁の左詰めにする
# フラグ:-、幅:5、指示子:d
irb(main):012:0> str = sprintf("%-5d", s)
=> "123  "

# 式展開みたいにも使える
# フラグ、幅:なし、指示子:d
irb(main):017:0> str = sprintf("%d月 %d日", 6, 28)
=> "6月 28日"

もっと詳しい内容はリファレンスマニュアルにて!
https://docs.ruby-lang.org/ja/latest/doc/print_format.html

Discussion