私はこれらの値を持つ文字列として持っています:
'`~!@#:;|$%^>?,)_+-={][&*(<]./"'
ヒアドキュメントなしで.rbで宣言する方法は?
ヒアドキュメントで:
bla = <<_
'`~!@#:;|$%^>?,)_+-={][&*(<]./"'
_
bla.chop!
これには HEREDOC を使用する必要がありますが、次のようになります。
str = '\'`~!@#:;|$%^>?,)_+-={][&*(<]./"\''
二重引用符を使用して、文字列内の単一引用符をエスケープするだけです。単純。
これを行うためにヒアドキュメントを使用する必要はなく、準備にエスケープを使用せずに簡単に行うことができます。
>> %q '`~!@#:;|$%^>?,)_+-={][&*(<]./"'
=> "'`~!@#:;|$%^>?,)_+-={][&*(<]./\"'"
ここで重要なのは、この文字のコレクションではスペース文字を使用していないため、スペースを使用して区切ることができるということです。
%q
またはを使用%Q
してこれを行うことができます。
明らかな理由から、通常は区切り文字にスペースを使用しないでください。ただし、非常に便利な場合もあります。
その文字列には、文字列をエスケープするために使用できるすべての文字があります。したがって、%q
/でも%Q
、この文字列をそのまま使用するのには役立ちません。
%q('`~!@#:;|$%^>?,\)_+-={][&*\(<]./"')
# quoted parentheses
したがって、唯一の選択肢はヒアドキュメントです。他のすべての方法では、一部の文字をバックスラッシュでエスケープする必要があります。