使用Gsub转义撇号

4

我正在使用Ruby进行工作,尝试将'字符转义为\'以便在SQL中使用。我正在尝试使用gsub,但似乎没有起作用。

"this doesn't work".gsub /'/, '\\'' #=> "this doesnt workt work"
"this doesn't work".gsub /'/, '\\\'' #=> "this doesnt workt work"
"this doesn't work".gsub /'/, '\\\\'' #=> "this doesn\\'t work"
"this doesn't work".gsub /'/, '\\\\\'' #=> "this doesn\\'t work"

我不知道是否应该使用gsub方法,所以我愿意尝试几乎任何能得到我想要结果的方法。


2
不要止步于四。去尝试五。实际上,四应该返回一个错误。此外,请注意为了让 Ruby 在双引号中显示(检查)结果,它将转义反斜杠。你可能没有注意到你已经得到了它。 - sawa
@sawa 谢谢。你说得对,我甚至没有注意到我做对了。 - Kyle Sletten
2个回答

3

由于Ruby正则表达式中的特殊含义/解释,其他人也遇到了这个问题。

\'表示$',即匹配后的所有内容。再次转义\即可解决问题。

请参考此答案

这样可以吗?

"this doesn't work".gsub /'/, '\\\\\'' => "this doesn\\'t work"

1
那种解决方案的问题在于它将 ' 转义为 \\'。我需要一个 \' - Kyle Sletten
1
糟糕,我忘记了当结果显示在双引号中时它会被转义。当程序写入文件并且我打开它时,一切都是正确的。我想我只是个白痴。 - Kyle Sletten
没关系。这也让我有些困惑。只要代码能够正常工作,那就是最重要的,对吧? ;) - jefflunt

0

你必须转义 \ 和 '。 当你需要在结果中使用 ' 时,为什么不用 "

定义结果呢?

puts "this doesn't work".gsub /'/, "\\\\'" #=> "this doesn\'t work"

\ 必须被转义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接