字符串中最后一个字符的索引位置

19

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

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

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

5个回答

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

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


7
这种方法稍微快一点(它从字符串的末尾开始搜索):
index = your_string:match'^.*()/'

4
循环?!?为什么需要循环呢?注意,有一个“reverse”原生字符串函数,只需运用它,然后获取第一个实例即可 :) 下面是一个示例,从完整路径中获取扩展名:
function fileExtension(path)
    local lastdotpos = (path:reverse()):find("%.")
    return (path:sub(1 - lastdotpos))
end

当然可以用一行代码完成,但为了易读性,我将其拆成两行。

2
这里有一个完整的解决方案。
local function basename(path)
  return path:sub(path:find("/[^/]*$") + 1)
end

1
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,记录最后的位置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接