Escaping Apostrophes Using Gsub

北战南征 提交于 2019-11-28 08:30:49

问题


I'm working in Ruby and I'm trying to escape ' characters to \' so that I can use them in SQL. I'm trying to use gsub, but it doesn't seem to be working.

"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"

I don't know if gsub is even the right method to be using, so I'm willing to try almost anything that gets the results I'm looking for.


回答1:


Someone else had this very issue, due to a special meaning/interpretation in Ruby's regex.

\' means $' which is everything after the match. Escape the \ again and it works

See this answer.

Does this work?

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



回答2:


You must escape the \ and the '. When you need the ' in the result, why not define the result with "

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

\ must be escaped anyway.



来源:https://stackoverflow.com/questions/6499443/escaping-apostrophes-using-gsub

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!