28

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

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

3 回答 3

35

\' 表示 $' ,即比赛后的所有内容。再次转义 \ 并且它可以工作

"Yaho'o".gsub("'", "\\\\'")
于 2010-02-01T21:58:21.223 回答
2
"Yaho'o".gsub("'", "\\\\'")

因为您要转义转义字符以及转义单引号。

于 2010-02-01T21:53:40.827 回答
1

这也可以做到,而且更具可读性:

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

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

def escape_single_quotes_and_backslash(str)
  str.gsub(/\\|'/) { |x| "\\#{x}" }
end
于 2015-12-10T20:40:41.337 回答