如何获取Lua中字符串中字符的最后一个索引?
"/some/path/to/some/file.txt"
如何获取上述字符串中最后一个/
的索引?
答案 0 :(得分:22)
index = string.find(your_string, "/[^/]*$")
(基本上,找到模式“正斜杠,然后零或更多不是正斜杠的东西,然后是字符串的结尾”的位置。)
答案 1 :(得分:6)
此方法更快一些(从字符串末尾搜索):
index = your_string:match'^.*()/'
答案 2 :(得分:0)
local s = "/aa/bb/cc/dd/ee.txt"
local sep = "/"
local lastIndex = nil
local p = string.find(s, sep, 1)
lastIndex = p
while p do
p = string.find(s, sep, p + 1)
if p then
lastIndex = p
end
end
print(lastIndex)
您可以继续查找下一个值,直到找到nil,记录最后一个位置
答案 3 :(得分:0)
这是一个完整的解决方案。
local function basename(path)
return path:sub(path:find("/[^/]*$") + 1)
end
答案 4 :(得分:0)
循环?!?为什么你需要一个循环呢?有一个'反向'本地字符串函数介意你,只需应用它然后得到第一个实例:)跟随一个样本,从完整的路径获得扩展:
function fileExtension(path)
local lastdotpos = (path:reverse()):find("%.")
return (path:sub(-lastdotpos+1))
end
当然,你可以在一行中完成它,为了便于辨识,我将它分成两部分。