kon*_*ung 16 ruby escaping ruby-on-rails backslash
我试图以这种格式在Windows平台上访问我的ruby脚本中的网络路径.
\\servername\some windows share\folder 1\folder2\
Run Code Online (Sandbox Code Playgroud)
现在,如果我尝试将其用作路径,它将无法工作.对于此脚本,没有正确转义单个反斜杠.
path = "\\servername\some windows share\folder 1\folder2\"
d = Dir.new(path)
Run Code Online (Sandbox Code Playgroud)
我尝试了所有我能想到的东西来正确地逃避路径中的斜线.但是我无法摆脱那个单一的反斜杠 - 因为它具有特殊意义.我尝试单引号,双引号,转义反斜杠本身,使用替代引号,如%Q {}或%q {},使用ascii转换为char.从某种意义上讲,我没有做任何事情.:-)现在临时解决方案是映射网络驱动器N:\指向该路径并以这种方式访问它,但这不是解决方案.
有谁知道如何正确逃脱单反斜杠?
谢谢
Joh*_*hat 23
只需加倍每个反斜杠,如下:
"\\\\servername\\some windows share\\folder 1\\folder2\\"
Run Code Online (Sandbox Code Playgroud)
mač*_*ček 13
试试这个
puts '\\\\servername\some windows share\folder 1\folder2\\'
#=> \\servername\some windows share\folder 1\folder2\
Run Code Online (Sandbox Code Playgroud)
只要您使用单引号来定义字符串(例如'foo'),\就不需要转义单个引号.除以下两种情况外
\\一个人工作\.所以,\\\\会给你\\你需要的起点.\路径末尾的尾随将尝试逃避收盘报价,因此您也需要在\\那里.你可以为自己定义一个优雅的帮手.\您可以/与以下方法结合使用,而不是使用笨重的路径分隔符:
def windows_path(foo)
foo.gsub('/', '\\')
end
puts windows_path '//servername/some windows share/folder 1/folder2/'
#=> \\servername\some windows share\folder 1\folder2\
Run Code Online (Sandbox Code Playgroud)
甜!
| 归档时间: |
|
| 查看次数: |
25572 次 |
| 最近记录: |