QKAKE::TECH

テックなことを書く

【Ruby】複数行の文字列を書くときに改行なしで改行する

str = "本日は
雨天なり"

p str
workspace ➤ ruby string.rb
"本日は\n雨天なり"

このように文字列リテラルの中で改行すると \n が含まれる。

複数行にわたって書くこともできます。 この場合含まれる改行文字は常に\nになります。

リテラル (Ruby 2.3.0)

したがって、 \n を含まずに改行したいときは以下のようにバックスラッシュ記法を用いる。

str = "本日は\
雨天なり"

p str
workspace ➤ ruby string.rb
"本日は雨天なり"

このように文字列をダブルクォートで囲った場合はバックスラッシュ記法が使えるので、\改行 によって改行とはみなされずに改行することができる。 ただしこれはダブルクォートで囲まれているときのみであり、シングルクォートで囲まれているときはこの限りではない。

str = '本日は\
雨天なり'

p str
workspace ➤ ruby string.rb
"本日は\\\n雨天なり"

シングルクォートで囲まれた文字列では行末の \ は \ そのものとして解釈されます。

refs:

ja.stackoverflow.com