Replace ' with \' in Ruby?

Earlz picture Earlz · Feb 15, 2010 · Viewed 28.1k times · Source

I'm trying to figure out how to replace a quote like ' with something like \'.

How would I do this?

I have tried

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

but it just gives an empty string. What am I doing wrong here?

Answer

Jonas Elfström picture Jonas Elfström · Feb 15, 2010

How about this

puts "'".gsub("'","\\\\'")
\'

The reason is that \' means post-match in gsub (regex) and because of that it needs to be escaped with \\' and \ is obviously escaped as \\, ending up with \\\\'.

Example

>> "abcd".gsub("a","\\'")
=> "bcdbcd"

a is replaced with everything after a.