如何用ruby中的转义单引号替换单引号

Rya*_*ick 3 ruby regex escaping gsub

我试图用ruby 1.9.3和1.8.7中的字符串中的转义单引号(\')替换单引号(').

确切的问题字符串是"您确定要删除'%@'".此字符串应变为"您确定要删除\'%@ \'"

使用.gsub!(/ \'/,"\'")会产生以下字符串"你确定要%@'%@".

关于发生了什么的任何想法?

mar*_*ius 7

String#gsub在形式上gsub(exp,replacement)有奇怪的怪癖影响替换字符串,有时需要大量的转义斜杠.Ruby用户经常被指示使用块形式:

str.gsub(/'/){ "\\'" }
Run Code Online (Sandbox Code Playgroud)

如果您想完全取消转义,请考虑使用备用字符串文字形式:

str.gsub(/'/){ %q(\') }
Run Code Online (Sandbox Code Playgroud)

一旦习惯了这些类型的文字,使用它们来避免转义序列可以使你的代码更具可读性.