我想用&
(或其他方法)将所有\&
个字符替换为String.gsub
。我已经尝试了几种组合并阅读another question here,但没有什么可行的。
"asdf & asdf".gsub("&", "\\\&") => "asdf & asdf"
答案 0 :(得分:10)
您的关联问题提供了解决方案 - 使用gsub
的块形式:
irb(main):009:0> puts "asdf & asdf".gsub("&"){'\&'}
asdf \& asdf
答案 1 :(得分:2)
我猜你正在使用1.8。在1.8中,irb
说明了这一点:
>> "asdf & asdf".gsub("&", "\\\&")
=> "asdf & asdf"
>> puts "asdf & asdf".gsub("&", "\\\&")
asdf & asdf
这与你所看到的相符。但是,如果你添加另一个反斜杠,你会得到你想要的东西:
>> puts "asdf & asdf".gsub("&", '\\\\&')
asdf \& asdf
四重反斜杠方法在1.9.2和1.8.7中为我生成相同的单逃逸&符号,所以把它变为四(不是十一,只有四个会做)。
答案 2 :(得分:1)
ruby-1.9.2-p180 :008 > puts "asdf & asdf".gsub(/&/, '\\\&')
asdf \& asdf