我有一个字符串变量,表示某个文件的完整路径,例如:
Linux上的x = "/home/user/.local/share/app/some_file"
或
Windows上的x = "C:\\Program Files\\app\\some_file"
我想知道是否有一些编程的方法,比手动拆分字符串到目录路径更好
当我从其他应用程序使用Lua扩展时,如何在Lua中返回目录路径(不带文件名的路径),而无需加载其他库(如LFS )?
发布于 2012-02-02 03:52:31
在普通的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,"\\"))
发布于 2017-04-06 23:49:23
这是一个基于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\
https://stackoverflow.com/questions/9102126
复制相似问题