18

如何在 Lua 中获取字符串中字符的最后一个索引?

"/some/path/to/some/file.txt"

如何获取/上述字符串中最后一个的索引?

4

5 回答 5

23
index = string.find(your_string, "/[^/]*$")

(基本上,找到模式“一个正斜杠,然后是零个或多个不是正斜杠的东西,然后是字符串的结尾”出现的位置。)

于 2013-01-28T01:23:49.880 回答
7

这种方法更快一点(它从字符串的末尾开始搜索):

index = your_string:match'^.*()/'
于 2013-01-29T01:00:25.923 回答
3

循环?!?为什么你需要一个循环呢?请注意,有一个“反向”本机字符串函数,只需应用它然后获取第一个实例 :) 遵循示例,从完整路径获取扩展名:

function fileExtension(path)
    local lastdotpos = (path:reverse()):find("%.")
    return (path:sub(1 - lastdotpos))
end

当然,您可以在一行中完成,为了便于阅读,我将其分成两部分。

于 2017-05-23T18:41:06.007 回答
2

这是一个完整的解决方案。

local function basename(path)
  return path:sub(path:find("/[^/]*$") + 1)
end
于 2016-10-05T11:34:19.773 回答
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)

您可以继续查找下一个值,直到找到零,记录最后一个位置

于 2013-06-19T07:16:26.070 回答