2017-02-14 166 views
1

我被困在使用反斜杠作为路径分隔符的windows的永恒问题中。我想要一个将windows路径转换为unix路径的Lua函数。Lua函数将Windows路径转换为unix路径

  1. 我知道我可以通过转义反斜杠来指定一个变量的路径,例如,

    文件名= “P:\\用户\\脚本\\ config.lua”

  2. 我知道这是可以做到使用不同的字符串分隔符例如

    文件名= [[P:\用户\脚本\ 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]])) 
+0

'io.open([E:/ TEMP /测试])'适用于Lua的5.1和WXP - 为什么你需要转换? Unix没有驱动P – FareakyGnome

回答

2

工作对我来说:

$ lua 
Lua 5.3.4 Copyright (C) 1994-2017 Lua.org, PUC-Rio 
> w = "c:\\windows\\system32" 
> w 
c:\windows\system32 
> w:gsub("\\", "/") 
c:/windows/system32  2 
+0

谢谢“return filename:gsub(”\\“,”/“)”适用于我所有的测试用例。 – Gavin

+0

不要忘记'gsub'返回2值。有一段时间很重要 – moteus