我想取一个代表文件路径的字符串,剥离文件名并保存路径。
例如,如果我有:
"/folder1/folder2/file.name"
我想在我的字符串中以"/folder1/folder2/"
结尾。
我一直在玩string.match()
,如下所示:http://lua-users.org/wiki/StringLibraryTutorial
我有以下代码:
mystring = "/var/log/test.log"
print(string.match(mystring, "%/"))
当我运行这个脚本时,我最终只返回一个'/'。
我原以为它会返回字符串中两个'/'的位置。
我也尝试用"%/"
替换模式"/"
,但这给了我相同的结果。
我确定我错过了一些非常简单的东西,但我看不出它是什么。
答案 0 :(得分:3)
通过模式%/
或/
,您告诉string.match
查找字符串/
,这就是您所拥有的。试试这个:
local mystring = "/var/log/test.log"
print(string.match(mystring, ".+/"))
此处模式.+/
表示查找一个或多个字符(.
)后跟/
。 +
意味着它是贪婪的,即尽可能地匹配。
答案 1 :(得分:0)
尝试以下任何选项:
local mystring = "/var/log/test.log"
print(mystring:gsub('([%w+]+%.%w+)$',''))
输出:/ var / log /
local mystring = "/var/log/test.log"
print(mystring:match('^(/.+/)'))
输出:/ var / log /
或者太简单的功能
function anystring(string)
local string = string:match('^(/.+/)')
if anystring then
return string
else
return false
end
end
local mystring = anystring('/var/log/test.log')
print(mystring)
输出:/ var / log /
在放置模式时,您可以尽可能具体,以避免代码错误