Lua从路径返回目录路径

时间:2012-02-01 19:41:04

标签: lua

我有一个字符串变量,表示某个文件的完整路径,如:

Linux上的

x = "/home/user/.local/share/app/some_file"
Windows上的x = "C:\\Program Files\\app\\some_file"

我想知道是否有一些编程方式,然后手动拆分字符串以获取目录路径

如何在Lua中返回目录路径(没有文件名的路径),而不加载像LFS这样的其他库,因为我正在使用其他应用程序的Lua扩展名?

3 个答案:

答案 0 :(得分:8)

在简单的Lua中,没有更好的方法。 Lua没有任何工作路径。你必须使用模式匹配。这完全符合提供工具的心态,但拒绝包含可以用单行代替的功能:

-- onelined version ;)
--    getPath=function(str,sep)sep=sep or'/'return str:match("(.*"..sep..")")end
getPath=function(str,sep)
    sep=sep or'/'
    return str:match("(.*"..sep..")")
end

x = "/home/user/.local/share/app/some_file"
y = "C:\\Program Files\\app\\some_file"
print(getPath(x))
print(getPath(y,"\\"))

答案 1 :(得分:1)

这是一个基于jpjacobs解决方案的独立且更简单的解决方案:

function getPath(str)
    return str:match("(.*[/\\])")
end

x = "/home/user/.local/share/app/some_file"
y = "C:\\Program Files\\app\\some_file"
print(getPath(x)) -- prints: /home/user/.local/share/app/
print(getPath(y)) -- prints: C:\Program Files\app\

答案 2 :(得分:1)

对于这样的事情,你可以编写自己的代码。但是纯Lua中也有一些库可以执行此操作,例如lua-pathPenlight