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進数文字コードから文字を出力)
デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ 開発エンジニア積極採用中です! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

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

hachi8833の書いた記事

夏のTechRachoフェア2019

週刊Railsウォッチ

インフラ

ActiveSupport探訪シリーズ