こんにちは、hachi8833です。
書式付き文字列メソッド「Strings#%」
Strings#%
は、Kernel.#sprintf
と同様の書式付き文字列メソッドです。
puts
やp
などの出力以外でも使えますし、Kernel.#sprintf
よりも生々しくないので、よりRubyらしく文字列フォーマットできるStrings#%
を活用するとよいでしょう。あまり凝った書式にすると可読性が落ちるかも。
オプション
Strings#%
の書式オプションは、ドキュメントにもあるようにC言語のsprintf(3)とだいたい同じです。というより多くはsprintf(3)をそのまま利用しています。
詳しくはドキュメントを見ていただくとして、よく使いそうなものをリストしておきます。
小数点: g
str = "%.05g" % 10 #=> "10" (.05gで小数以下5桁、#なしだと小数点以下を抑制)
str = "%#.05g" % 10 #=> "10.000" (.05gで小数以下5桁、#ありだと小数点以下を抑制しない)
正負符号: +
str = "%+d" % 10 #=> "+10" (dで10進整数、+記号で正負符号を追加)
str = "%-d" % -10 #=> "-10" (dで10進整数、+記号で正負符号を追加)
ゼロで埋める: 0
str = "%#010d" % 10 #=> "0000000010" (#010dで上位を0で埋める10桁)
文字コードを出力: c
str = "%c" % 10 #=> "\\n" (cで10進数文字コードから文字を出力)
str = "%c" % 0x0a #=> "\\n" (cで16進数文字コードから文字を出力)