我想用String.gsub
(或其他方法)將所有&
字符替換爲\&
。我嘗試了幾種組合,並閱讀another question here,但沒有任何工作會發揮作用。在Ruby中將「&」替換爲「&」似乎不可能?
"asdf & asdf".gsub("&", "\\\&") => "asdf & asdf"
我想用String.gsub
(或其他方法)將所有&
字符替換爲\&
。我嘗試了幾種組合,並閱讀another question here,但沒有任何工作會發揮作用。在Ruby中將「&」替換爲「&」似乎不可能?
"asdf & asdf".gsub("&", "\\\&") => "asdf & asdf"
你鏈接的問題提供了一個解決方案 - 使用gsub
塊形式:
irb(main):009:0> puts "asdf & asdf".gsub("&"){'\&'}
asdf \& asdf
ruby-1.9.2-p180 :008 > puts "asdf & asdf".gsub(/&/, '\\\&')
asdf \& asdf
這不是一團糟。如果沒有'puts',你會得到'result.inspect',對於一個字符串,它會給你一個字符串,因爲你必須用雙引號鍵入它來獲得'result'。 –
我要猜你正在使用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所以把它上升到四(不是十一,只有四會做)。
這可能適用於&但它不適用於' –
事實上,因爲替換字符串是由''分隔的。試試'puts'asdf'asdf「.gsub(」'「){」\\'「}' – Chowlett
Lifesaver!非常感謝 –