是否有不使用模式的Lua字符串查找函数?

9
我应用了一个函数,但效果看起来很差。
function find_without_pattern(s1,s2)
    for i =1,#s1-#s2+1 do
        local t = string.sub(s1,i,#s2+i-1)
        if t == s2 then
            return i,i+#s2-1
        end
    end
end
1个回答

12
string.find方法提供了第四个可选参数,用于强制只进行纯文本搜索。详情请见官方文档

例如:

string.find("he#.*o", "e#.*o", 1, true)

按照 Lua 手册的说法:

string.find (s, pattern [, init [, plain]])

第四个可选参数plain可以设置为true,以关闭模式匹配功能,这样函数将执行普通的“查找子字符串”操作,不考虑模式中的任何字符。请注意,如果提供了plain参数,则必须同时提供init参数。

将为您提供正确的结果。


很好,结果我做了不必要的工作。我还编辑了你的答案,因为我已经删除了我的答案。 - Yu Hao

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