我有內容的簡單的文本文件:紅寶石雙斜線GSUB問題
patent-inv
我要去取代專利-INV與第1部分第2部分\\
我做到了在這樣的方式:
source_file = IO.read("#{Rails.root}/my_userdata/1.txt")
source_file.gsub!('<<<patent-inv>>>', "part1\\\\part2")
File.open("#{Rails.root}/my_userdata/2.txt", "wb") {|f| f.write source_file }
但在文件中我得到:第一部分 \ 2部分
我嘗試了幾種方法,但我得到了相同的結果:
source_file.gsub!('<<<patent-inv>>>', "part1\\\\part2") => "part1\part2"
source_file.gsub!('<<<patent-inv>>>', "part1\\\part2") => "part1\part2"
source_file.gsub!('<<<patent-inv>>>', "part1\\part2") => "part1\part2"
誰能幫我找到了這種奇怪的行爲?
**爲馬茨說:**反斜槓在字符串中的特殊含義逃跑,所以你需要 雙斜槓。另外,反斜槓在 gsub/sub替換字符串中有特殊含義,所以你需要再次翻倍。那是 之所以你需要4個反斜槓來代替 替換中的每個單個反斜槓。這很奇怪,但很長一段時間它是規格。我不認爲 我們可以改變這種行爲。您可以改爲使用block,例如** printf「b」.gsub(/ b /){'\\'} ** – 2012-04-20 08:30:08