Tech Racho エンジニアの「?」を「!」に。
  • 開発

sprintfよりRubyらしく書けるフォーマット文字列メソッド「Strings#%」

こんにちは、hachi8833です。

書式付き文字列メソッド「Strings#%」

160915_1236_ZwW4zt

Strings#%は、Kernel.#sprintfと同様の書式付き文字列メソッドです。

putspなどの出力以外でも使えますし、Kernel.#sprintfよりも生々しくないので、よりRubyらしく文字列フォーマットできるStrings#%を活用するとよいでしょう。あまり凝った書式にすると可読性が落ちるかも。

160915_1716_glxg8m

オプション

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進数文字コードから文字を出力)

CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。