Ruby: 文字列の書式設定では引用符内で書式設定以外の`%`記号を`%%`とエスケープすること

ある日のSlackにて 前振り1: Rubyの%記号と式展開 今回の記事を書くために、まず%(パーセント)記号と式展開についてそれぞれ別記事にまとめましたので先に以下をご覧ください。そうしないと自分が混乱してしまうので。 Ruby: パーセント記号 `%` の使い方まとめ Rubyの式展開(string interpolation)についてまとめ: `#{}`、`%`、Railsの`?` 前振り2: sprintfやString#%メソッドを使う場合の%文字のエスケープ この部分はRubyのバージョンに限らず共通です。 RubyのsprintfやString#%メソッドを用いて書式設定を行う場合、引用符内で%そのものを出力したい場合は%%とすることでエスケープされます(エラーメッセージでも%%を使えと書かれてますね)。面白いことに、%%による%のエスケープは二重引用符でも一重引用符でも使えます。本記事では簡単のためString#%メソッドのみを用いています。 ‘%0.0f%%’ % 45 #=> “45%” “%0.0f%%” % 45 #=> “45%” # 機能と関係ない%はエスケープしないとエラーになる ‘%0.0f%’ % 45 #=> ArgumentError: incomplete format specifier; use %% (double %) instead 逆に、バックスラッシュ%では二重引用符/一重引用符にかかわらず、%をエスケープできません。 “%0.0f%” % 45 #=> ArgumentError: incomplete format specifier; use %% (double %) instead `%0.0f%` … Continue reading Ruby: 文字列の書式設定では引用符内で書式設定以外の`%`記号を`%%`とエスケープすること