1

私はこれらの値を持つ文字列として持っています:

'`~!@#:;|$%^>?,)_+-={][&*(<]./"'

ヒアドキュメントなしで.rbで宣言する方法は?

ヒアドキュメントで:

bla = <<_
'`~!@#:;|$%^>?,)_+-={][&*(<]./"'
_
bla.chop!
4

4 に答える 4

2

これには HEREDOC を使用する必要がありますが、次のようになります。

str = '\'`~!@#:;|$%^>?,)_+-={][&*(<]./"\''

二重引用符を使用して、文字列内の単一引用符をエスケープするだけです。単純。

于 2013-09-15T16:25:08.273 に答える
1

これを行うためにヒアドキュメントを使用する必要はなく、準備にエスケープを使用せずに簡単に行うことができます。

>> %q '`~!@#:;|$%^>?,)_+-={][&*(<]./"' 
=> "'`~!@#:;|$%^>?,)_+-={][&*(<]./\"'"

ここで重要なのは、この文字のコレクションではスペース文字を使用していないため、スペースを使用して区切ることができるということです。

%qまたはを使用%Qしてこれを行うことができます。

明らかな理由から、通常は区切り文字にスペースを使用しないでください。ただし、非常に便利な場合もあります。

于 2013-09-15T23:38:56.427 に答える
0

その文字列には、文字列をエスケープするために使用できるすべての文字があります。したがって、%q/でも%Q、この文字列をそのまま使用するのには役立ちません。

%q('`~!@#:;|$%^>?,\)_+-={][&*\(<]./"')
# quoted parentheses

したがって、唯一の選択肢はヒアドキュメントです。他のすべての方法では、一部の文字をバックスラッシュでエスケープする必要があります。

于 2013-09-15T16:25:44.680 に答える