在ruby中转义字符串中的单引号和双引号?

Ale*_*eem 65 ruby escaping

如何在字符串中转义单引号和双引号?

我想一起逃避单引号和双引号.我知道如何单独传递它们但不知道如何传递它们.

例如: str = "ruby 'on rails" " = ruby 'on rails"

Rob*_*rco 78

我首选的方法是不要担心转义而是使用%q,它的行为类似于单引号字符串(没有插值或字符转义),或者%Q用于双引号字符串行为:

str = %q[ruby 'on rails" ] # like single-quoting
str2 = %Q[quoting with #{str}] # like double-quoting: will insert variable
Run Code Online (Sandbox Code Playgroud)

请参阅https://docs.ruby-lang.org/en/trunk/syntax/literals_rdoc.html#label-Strings并搜索% strings.

  • 只有当你"检查"它时才会显示转义.试着改变它. (8认同)

gau*_*roy 28

使用反斜杠转义字符

str = "ruby \'on rails\" "
Run Code Online (Sandbox Code Playgroud)


Jon*_*han 19

您可以使用Q字符串,它允许您使用您喜欢的任何分隔符:

str = %Q|ruby 'on rails" " = ruby 'on rails|
Run Code Online (Sandbox Code Playgroud)


Gab*_*sto 19

这是一个完整的清单:

在此输入图像描述

来自http://learnrubythehardway.org/book/ex10.html


Joh*_*ooy 7

>> str = "ruby 'on rails\" \" = ruby 'on rails"
=> "ruby 'on rails" " = ruby 'on rails"
Run Code Online (Sandbox Code Playgroud)


jba*_*arr 7

如果我开始担心逃跑,我会选择heredoc.它会照顾你:

string = <<MARKER 
I don't have to "worry" about escaping!!'"!!
MARKER
Run Code Online (Sandbox Code Playgroud)

MARKER描述字符串的开头/结尾.打开heredoc后,在下一行开始字符串,然后在它自己的行上再次使用描绘符结束字符串.

这将完成所需的所有转义并转换为双引号字符串:

string
=> "I don't have to \"worry\" about escaping!!'\"!!\n"
Run Code Online (Sandbox Code Playgroud)


Ale*_*ira 5

我会使用: str = %(ruby 'on rails ") 因为%只代表双引号(或%Q)并允许在字符串上插入变量.