1

我有作为字符串,具有这些值:

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

如何在没有heredoc的情况下在.rb上声明它?

与heredoc:

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

4 回答 4

2

你应该为此使用HEREDOC,但是你去:

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

只需使用双引号并转义字符串中的单引号。简单的。

于 2013-09-15T16:25:08.273 回答
2

使用heredoc:

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

你可以观察检查并复制它:

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

就那么简单。

于 2013-09-15T16:27:41.750 回答
1

您不需要使用heredoc 来执行此操作,并且您可以简单地执行此操作,而无需在准备过程中使用任何转义符。

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

这里的关键是你没有在这个字符集合中使用空格字符,所以我们可以使用空格来分隔它。

您可以使用%q%Q来执行此操作。

出于显而易见的原因,通常不要为此使用空格作为分隔符,但有时它非常有用。

于 2013-09-15T23:38:56.427 回答
0

在该字符串中,您拥有可用于转义字符串的每个字符。因此,即使%q/%Q也不会帮助您逐字使用此字符串。

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

所以,你唯一的选择是heredoc。使用其他所有方法,您都必须对某些字符进行反斜杠转义。

于 2013-09-15T16:25:44.680 回答