Ruby gsub 不会转义单引号

Posted

技术标签:

【中文标题】Ruby gsub 不会转义单引号【英文标题】:Ruby gsub doesn't escape single-quotes 【发布时间】:2011-01-11 22:14:10 【问题描述】:

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

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

【问题讨论】:

这是我见过的最奇怪的事情之一。 【参考方案1】:

这样也行,而且可读性更强:

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

如果您想同时转义单引号和反斜杠,以便可以将该字符串嵌入双引号 ruby​​ 字符串,那么以下内容将为您完成:

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

【讨论】:

我用的是上面那个,效果很好。正是我需要的。【参考方案2】:

\' 表示 $' ,即匹配后的所有内容。 再次转义 \ 就可以了

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

【讨论】:

红宝石 1.9.3 "Yaho'o".gsub("'", "\\\\'") => "Yaho\\'o" @AdrienSchuler 它确实有效,IRB 显示双反斜杠,因此您可以看到它已被转义。 "Yaho'o".gsub("'", "\\\\'").length => 7 这是在哪里记录的?【参考方案3】:
"Yaho'o".gsub("'", "\\\\'")

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

【讨论】:

以上是关于Ruby gsub 不会转义单引号的主要内容,如果未能解决你的问题,请参考以下文章

如何转义json字符串中的单引号? JSON::ParserError Ruby

SQL 的转义字符是:'(单引号)

Ruby

Perl双引号和单引号的区别

shell中单引号怎么转义

js单引号和双引号的转义问题