Есть ли Lua string.find без шаблона

Я применяю функцию, но выглядит так плохо.

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

person mos    schedule 24.09.2013    source источник


Ответы (1)


Метод string.find предоставляет необязательный 4-й параметр для принудительного поиска открытого текста.

Например:

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

даст вам правильные результаты.

Цитирование справочных страниц Lua:

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

Значение true в качестве четвертого необязательного аргумента plain отключает средства сопоставления с шаблоном, поэтому функция выполняет простую операцию «найти подстроку», при этом никакие символы в шаблоне не считаются магическими. Обратите внимание, что если указано plain, то также должно быть указано init.

person hjpotter92    schedule 24.09.2013
comment
Хорошо, оказывается, я сделал ненужную работу. Я также отредактировал ваш ответ, так как удалил свой. - person Yu Hao; 24.09.2013