在Ruby中替换'with \'?

时间:2010-02-15 14:49:38

标签: ruby string gsub

我正试图弄清楚如何用'之类的内容替换像\'这样的引用。

我该怎么做?

我试过了

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

但它只是一个空字符串。我在这做错了什么?

5 个答案:

答案 0 :(得分:28)

这个怎么样

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

原因是\'表示gsub(正则表达式)中的匹配后,因此需要使用\\'\进行转义。显然是\\转义,最后是\\\\'

实施例

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

a将替换为a之后的所有内容。

答案 1 :(得分:2)

$'变量是匹配右侧的字符串。在gsub替换字符串中,相同的变量将是\' - 因此问题。

x = "'foo'"
x.gsub!(/'/, "\\'")
puts x.inspect        # foo'foo

这应该有效:

x = "'foo'"
x.gsub!(/'/, "\\\\'")
puts x.inspect
puts x

答案 2 :(得分:0)

这可能是一个错误..或者至少,某些东西打破了我对最小惊喜原则的看法。

irb(main):039:0> "life's grand".gsub "'", "\\\'"
=> "lifes grands grand"
irb(main):040:0> "life's grand".gsub "'", "\\\\'"
=> "life\\'s grand"

答案 3 :(得分:0)

我实际使用的两步法......

BACKSLASH = 92.chr
temp = "'".gsub("'", "¤'")
puts temp.gsub("¤", BACKSLASH)
=> "\'"

只有在文本中没有使用“¤”时才会起作用......

答案 4 :(得分:-1)

这样做:

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

不漂亮,但我认为它有效......