如何在 Lua 中获取字符串中字符的最后一个索引?
"/some/path/to/some/file.txt"
如何获取/
上述字符串中最后一个的索引?
index = string.find(your_string, "/[^/]*$")
(基本上,找到模式“一个正斜杠,然后是零个或多个不是正斜杠的东西,然后是字符串的结尾”出现的位置。)
这种方法更快一点(它从字符串的末尾开始搜索):
index = your_string:match'^.*()/'
循环?!?为什么你需要一个循环呢?请注意,有一个“反向”本机字符串函数,只需应用它然后获取第一个实例 :) 遵循示例,从完整路径获取扩展名:
function fileExtension(path)
local lastdotpos = (path:reverse()):find("%.")
return (path:sub(1 - lastdotpos))
end
当然,您可以在一行中完成,为了便于阅读,我将其分成两部分。
这是一个完整的解决方案。
local function basename(path)
return path:sub(path:find("/[^/]*$") + 1)
end
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)
您可以继续查找下一个值,直到找到零,记录最后一个位置