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

时间:2013-01-28 01:17:04

标签: lua

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

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

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

5 个答案:

答案 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

当然,你可以在一行中完成它,为了便于辨识,我将它分成两部分。