在Ruby中转义字符串中的双反斜杠和单反斜杠

我试图以这种格式在Windows平台上访问我的ruby脚本中的网络路径。

\\servername\some windows share\folder 1\folder2\ 

现在,如果我尝试将其用作路径,它将无法工作。 对于此脚本,没有正确转义单个反斜杠。

 path = "\\servername\some windows share\folder 1\folder2\" d = Dir.new(path) 

我尝试了所有我能想到的东西来正确地逃避路径中的斜线。 然而,我无法摆脱那个单一的反斜杠 – 因为它具有特殊意义。 我尝试单引号,双引号,转义反斜杠本身,使用替代引号,如%Q {}或%q {},使用ascii转换为char。 从某种意义上讲,我没有做任何事情。 :-)现在临时解决方案是映射网络驱动器N:\指向该路径并以这种方式访问​​它,但这不是解决方案。

有谁知道如何正确逃脱单反斜杠?

谢谢

只需加倍每个反斜杠,如下:

 "\\\\servername\\some windows share\\folder 1\\folder2\\" 

试试这个

 puts '\\\\servername\some windows share\folder 1\folder2\\' #=> \\servername\some windows share\folder 1\folder2\ 

只要您使用单引号来定义字符串(例如, 'foo' ),就不需要对单个\进行转义。 除以下两种情况外

  1. \\本身就是一个单一的\ 。 所以, \\\\会给你你需要的起点。
  2. 路径末尾的尾随\将尝试转义结束引号,因此您还需要一个\\

或者,

你可以为自己定义一个优雅的帮手。 您可以使用/与这样的方法结合使用/而不是使用笨重的路径分隔符:

 def windows_path(foo) foo.gsub('/', '\\') end puts windows_path '//servername/some windows share/folder 1/folder2/' #=> \\servername\some windows share\folder 1\folder2\ 

甜!