Ruby gsub不会逃避单引号

时间:2010-02-01 21:49:14

标签: ruby escaping gsub

我不明白这里发生了什么。我应该如何提供gsub来获取字符串“Yaho \'o”?

>> "Yaho'o".gsub("Y", "\\Y")
=> "\\Yaho'o"
>> "Yaho'o".gsub("'", "\\'")
=> "Yahooo"

3 个答案:

答案 0 :(得分:28)

\'表示$',这是匹配后的所有内容。 再次逃离\它工作

"Yaho'o".gsub("'", "\\\\'")

答案 1 :(得分:2)

"Yaho'o".gsub("'", "\\\\'")

因为您正在逃避转义字符以及转义单引号。

答案 2 :(得分:1)

这也可以做到,而且它的可读性更高:

def escape_single_quotes(str)
  str.gsub(/'/) { |x| "\\#{x}" }
end

如果你想要转义单引号和反斜杠,以便可以将该字符串嵌入双引号的ruby字符串中,那么以下内容将为您执行此操作:

def escape_single_quotes_and_backslash(str)
  str.gsub(/\\|'/) { |x| "\\#{x}" }
end