2011-07-04 52 views

回答

9

你鏈接的問題提供了一個解決方案 - 使用gsub塊形式:

irb(main):009:0> puts "asdf & asdf".gsub("&"){'\&'} 
asdf \& asdf 
+0

這可能適用於&但它不適用於' –

+0

事實上,因爲替換字符串是由''分隔的。試試'puts'asdf'asdf「.gsub(」'「){」\\'「}' – Chowlett

+0

Lifesaver!非常感謝 –

1
ruby-1.9.2-p180 :008 > puts "asdf & asdf".gsub(/&/, '\\\&') 
asdf \& asdf 
+0

這不是一團糟。如果沒有'puts',你會得到'result.inspect',對於一個字符串,它會給你一個字符串,因爲你必須用雙引號鍵入它來獲得'result'。 –

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所以把它上升到四(不是十一,只有四會做)。