我有作为字符串,具有这些值:
'`~!@#:;|$%^>?,)_+-={][&*(<]./"'
如何在没有heredoc的情况下在.rb上声明它?
与heredoc:
bla = <<_
'`~!@#:;|$%^>?,)_+-={][&*(<]./"'
_
bla.chop!
你应该为此使用HEREDOC,但是你去:
str = '\'`~!@#:;|$%^>?,)_+-={][&*(<]./"\''
只需使用双引号并转义字符串中的单引号。简单的。
使用heredoc:
bla = <<_
'`~!@#:;|$%^>?,)_+-={][&*(<]./"'
_
bla.chop!
你可以观察检查并复制它:
"'`~!@#:;|$%^>?,)_+-={][&*(<]./\"'"
就那么简单。
您不需要使用heredoc 来执行此操作,并且您可以简单地执行此操作,而无需在准备过程中使用任何转义符。
>> %q '`~!@#:;|$%^>?,)_+-={][&*(<]./"'
=> "'`~!@#:;|$%^>?,)_+-={][&*(<]./\"'"
这里的关键是你没有在这个字符集合中使用空格字符,所以我们可以使用空格来分隔它。
您可以使用%q
或%Q
来执行此操作。
出于显而易见的原因,通常不要为此使用空格作为分隔符,但有时它非常有用。
在该字符串中,您拥有可用于转义字符串的每个字符。因此,即使%q
/%Q
也不会帮助您逐字使用此字符串。
%q('`~!@#:;|$%^>?,\)_+-={][&*\(<]./"')
# quoted parentheses
所以,你唯一的选择是heredoc。使用其他所有方法,您都必须对某些字符进行反斜杠转义。