Ruby:使用&符号替换字符串&符号和反斜杠

时间:2013-05-28 07:48:35

标签: ruby

简单的问题,但我找不到简单的答案

我有一个字符串

str = 'a&b' 

我需要更换&到\&

str
>>> a\&b

在php中,我可以这样做

str_replace('&', '\\&', $str); \\ >>> a\&b

但是在红宝石中这不起作用

str.gsub('&', '\\&')
>>> a&b

2 个答案:

答案 0 :(得分:4)

2.0.0-p0 :018 > "a&b".gsub('&', '\\\&')
 => "a\\&b"
2.0.0-p0 :019 > _.chars.to_a
 => ["a", "\\", "&", "b"]
2.0.0-p0 :023 > puts "a&b".gsub('&', '\\\&')
a\&b

答案 1 :(得分:3)

使用块的解决方案:

> puts 'a&b'.gsub('&') { '\&' }
a\&b

在块形式中,不会解释前缀为\的反向引用,就像gsub的替换参数中的情况一样。

在块形式中,可以使用$ n,$& ...变量。

以你正在使用的gsub形式,必须使用另一个反斜杠转义双反斜杠。