代码之家  ›  专栏  ›  技术社区  ›  konung

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

  •  16
  • konung  · 技术社区  · 14 年前

    我正在尝试以这样的格式访问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:\指向该路径并以这种方式访问它,但这不是一个解决方案。

    有没有人知道如何正确地摆脱单反斜杠?

    谢谢你

    2 回复  |  直到 11 年前
        1
  •  23
  •   John Douthat    14 年前

    把每一个反斜杠加倍,就像这样:

    "\\\\servername\\some windows share\\folder 1\\folder2\\"
    
        2
  •  13
  •   maček    14 年前

    试试这个

    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\