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

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

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

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

点赞
用户148870
用户148870
index = string.find(your_string, "/[^/]*$")

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

2013-01-28 01:23:49
用户1847592
用户1847592

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

index = your_string:match'^.*()/'
2013-01-29 01:00:25
用户577984
用户577984
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,记录下最后位置

2013-06-19 07:16:26
用户6799184
用户6799184

以下是完整的解决方案。

local function basename(path)
  return path:sub(path:find("/[^/]*$") + 1)
end

basename 函数用于获取路径中的文件名。

2016-10-05 11:34:19
用户1276688
用户1276688

循环?!?为什么需要循环?顺便提一句,有一个'反转'本地字符串函数,只需应用即可获得第一个实例 :) 这是一个示例,用于从完整路径中获取扩展名:

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

` ``

当然,您可以在一行中完成它,但出于可读性的考虑,我将其拆分为两个部分。

2017-05-23 18:41:06