lua string.find can';“t匹配”/&引用;

lua string.find can';“t匹配”/&引用;,lua,find,Lua,Find,Lua string.find找不到“/”,请查看以下代码: c=“~/abc.123” 打印(string.find(c,“/”,-1,true)) 这总是返回“nil”请参阅Lua参考手册。 string.find的第三个参数将决定从何处开始搜索。 输入-1时,将从字符串的最后一个字符开始向前搜索。当然,那样你什么也找不到 对于字符串,正索引给出从字符串开始的位置,负索引给出从字符串结束的位置 使用1从第一个字符开始。然后你会找到你的斜线。或者,您可以使用任何不能用于向左搜索字符串的内容。

Lua string.find找不到“/”,请查看以下代码:

c=“~/abc.123” 打印(string.find(c,“/”,-1,true))


这总是返回“nil”

请参阅Lua参考手册。

string.find的第三个参数将决定从何处开始搜索。
输入
-1
时,将从字符串的最后一个字符开始向前搜索。当然,那样你什么也找不到

对于字符串,正索引给出从字符串开始的位置,负索引给出从字符串结束的位置

使用1从第一个字符开始。然后你会找到你的斜线。或者,您可以使用任何不能用于向左搜索字符串的内容。
init
参数仅设置开始向右搜索的位置:

第三个可选数值参数
init
指定从何处开始搜索;其默认值为1,可以为负值

以及《负指数手册》中的:

索引允许为负数,并被解释为从字符串末尾向后索引。因此,最后一个字符位于位置-1,依此类推

您需要使用自己的函数,从右侧开始搜索索引:

local function r_find (str, chr)
    local bchar = chr:byte(1)

    for i = #str, 1, -1 do
        if str:byte(i) == bchar then
            return i
        end
    end
end

print(r_find('~/.config/foo/bar', '/')) --> 14

或考虑使用查找最后一节:

print(('~/.config/foo/bar'):match('/([^/]+)$')) --> 'bar'

另一种选择是简单地将字符串拆分为各个部分,并获取最后一部分。

要查找最后出现的
/
,请使用
string.find(s,“.*/”
)。第二个返回值是上次<代码> /< /代码>的位置。

< P> LUA不能做左搜索,考虑先反转字符串:

function Find_Leftwards(s,m,i)
    local b,f = s:reverse():find(m, i)
    return #s-f, #s-b
end

有人能帮忙解决这个问题吗?
function Find_Leftwards(s,m,i)
    local b,f = s:reverse():find(m, i)
    return #s-f, #s-b
end