Ruby用单反斜杠替换双反斜杠

时间:2012-09-05 16:21:13

标签: ruby replace backslash

我似乎无法用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中找到一种简单的方法。

3 个答案:

答案 0 :(得分:6)

用这条线......

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

...你实际创建了一个如下所示的字符串:

this\is\a\test

...因为每个\\都会被识别为单个斜杠。当然,你将无法替换双斜杠,因为你的字符串中没有。

line.gsub("\\", "_")行就是这样做的:用_符号替换字符串中的所有单个斜杠。

line.gsub("\\", "\\")只是伪装的无操作。

答案 1 :(得分:-1)

这应该可以用单斜杠替换双斜杠:

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

答案 2 :(得分:-1)

我认为这可以完成工作:str.gsub('\\',"\/")