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進数文字コードから文字を出力)
Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833、GitHub: @hachi8833 コボラー、ITコンサル、ローカライズ業界、Rails開発を経てTechRachoの編集・記事作成を担当。 これまでにRuby on Rails チュートリアル第2版の半分ほど、Railsガイドの初期翻訳ではほぼすべてを翻訳。その後も折に触れてそれぞれ一部を翻訳。 かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。 仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ