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 不会转义单引号的主要内容,如果未能解决你的问题,请参考以下文章