如何在字符串中转义单引号和双引号?
我想一起逃避单引号和双引号.我知道如何单独传递它们但不知道如何传递它们.
例如: 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.
Jon*_*han 19
您可以使用Q字符串,它允许您使用您喜欢的任何分隔符:
str = %Q|ruby 'on rails" " = ruby 'on rails|
Run Code Online (Sandbox Code Playgroud)
>> str = "ruby 'on rails\" \" = ruby 'on rails"
=> "ruby 'on rails" " = ruby 'on rails"
Run Code Online (Sandbox Code Playgroud)
如果我开始担心逃跑,我会选择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)