我有一个字符串变量,表示某个文件的完整路径,如:
Linux上的 x = "/home/user/.local/share/app/some_file"
或
Windows上的x = "C:\\Program Files\\app\\some_file"
我想知道是否有一些编程方式,然后手动拆分字符串以获取目录路径
如何在Lua中返回目录路径(没有文件名的路径),而不加载像LFS这样的其他库,因为我正在使用其他应用程序的Lua扩展名?
答案 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)