问题
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