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

Kev*_*ert 2 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"
Run Code Online (Sandbox Code Playgroud)

这没用,所以我决定尝试找到一个至少可以替代的比赛.

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" 
Run Code Online (Sandbox Code Playgroud)

我仍然无法在Ruby中找到一种简单的方法.

rai*_*7ow 5

有了这条线......

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

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

this\is\a\test

......因为每个\\都被认为是一个斜线.当然,你将无法替换双斜杠,因为你的字符串中没有.

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

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

  • 我们如何将 `line = "this\\is\\a\\test"` 更改为 `line = "this\is\a\test"` gsub 在这种情况下不起作用 (2认同)