2012-09-05 181 views
2

我似乎無法用Ruby中的單反斜槓替換雙反斜槓。我想我會用另一個反斜槓來避免反斜槓。Ruby用單反斜槓替換雙反斜槓

1.9.3-p194 :001 > line = "this\\is\\a\\test" 
    => "this\\is\\a\\test" 
1.9.3-p194 :002 > line.gsub("\\\\", "\\") # Nothing 
    => "this\\is\\a\\test" 

這沒有奏效,所以我決定嘗試找到一個至少可以替代的匹配項。

1.9.3-p194 :003 > line.gsub("\\", "_") # This works for replacing \\ 
    => "this_is_a_test" 
1.9.3-p194 :004 > line.gsub("\\", "\\") # Nothing 
    => "this\\is\\a\\test" 

我仍然無法在Ruby中找到簡單的方法。

回答

5

這條線......

line = "this\\is\\a\\test"

...你居然創建一個字符串看起來像這樣:

this\is\a\test

...因爲每個\\將被視爲一個斜線。當然,你將無法替換雙斜槓,因爲你的字符串中沒有任何字符串。

line.gsub("\\", "_")行正在做的只是:用_符號替換所有單個斜槓。

line.gsub("\\", "\\")只是一個僞裝無操作。

-1

這應該與單斜槓替換雙斜槓工作:

str.gsub(/\\\\/,"\\/") 
+0

遺憾的是不:( – Rimian