Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a Lua string.find without pattern

I apply a function, but looks so bad.

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
like image 965
mos Avatar asked Sep 24 '13 04:09

mos


1 Answers

The string.find method provides an optional 4th parameter to enforce a plaintext search by itself.

For example:

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

will give you the correct results.

Quoting the Lua manual pages:

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

A value of true as a fourth, optional argument plain turns off the pattern matching facilities, so the function does a plain "find substring" operation, with no characters in pattern being considered magic. Note that if plain is given, then init must be given as well.

like image 65
hjpotter92 Avatar answered Sep 22 '22 15:09

hjpotter92