Lua函数:将Windows路径转换为Unix路径

我一直困扰于Windows使用反斜杠作为路径分隔符的问题。我想要一个Lua函数,将Windows路径转换为Unix路径。

  1. 我知道我可以通过转义反斜杠来将路径分配给变量,例如

    filename = "P:\\user\\scripts\\config.lua"

  2. 我知道可以使用不同的字符串定界符来实现,例如

    filename = [[P:\user\scripts\config.lua]]

  3. 我知道我不能使用string.gsub,因为单个反斜杠被删除或解释为转义序列,然后被传递给gsub。

因此,当我在Windows中将文件名分配给变量时,我遇到了问题,因为字符串包含单个反斜杠,例如

filename = arg[0]
filename = debug.getinfo(2, "S").source:sub(2)

我该如何将这个字符串转换为Unix风格的带前斜杠的字符串?

function unixpath(filename)
    if filename~=nil then

    else
        return nil
    end
end

print(unixpath(arg[0]))
print(unixpath(debug.getinfo(2, "S").source:sub(2)))
print(unixpath([[P:\user\scripts\config.lua]]))
点赞
用户1351465
用户1351465

可以工作:

$ lua
Lua 5.3.4  版权所有 (C) 1994-2017 Lua.org, PUC-Rio
> w = "c:\\windows\\system32"
> w
c:\windows\system32
> w:gsub("\\", "/")
c:/windows/system32     2
2017-02-14 14:41:27