Неожиданное поведение функции find()

Страницы: 1
RSS
Неожиданное поведение функции find(), Функция find() не находит строку в самой себе
 
Вопрос не по Квику, а по QLUA

Столкнулся с таким фактом, что Функция find() не находит строку в самой себе
Мой пример:


Код
         k="Строка-Демо"
         while k:len()>1 do
            t=k:find(k)
            ToLog("Поиск подстроки "..k.." в самой себе даёт "..tostring(t))
            k=k:sub(1,-2)
         end     
Получаем:
Код
 Поиск подстроки Строка-Демо в самой себе даёт nil 
 Поиск подстроки Строка-Дем в самой себе даёт nil 
 Поиск подстроки Строка-Де в самой себе даёт nil 
 Поиск подстроки Строка-Д в самой себе даёт nil 
 Поиск подстроки Строка- в самой себе даёт 1 
 Поиск подстроки Строка в самой себе даёт 1 
 Поиск подстроки Строк в самой себе даёт 1 
 Поиск подстроки Стро в самой себе даёт 1 
 Поиск подстроки Стр в самой себе даёт 1 
 Поиск подстроки Ст в самой себе даёт 1 

Заменим Строка-Демо на Строка-Лом


Код
Поиск подстроки Строка-Лом в самой себе даёт nil;
Поиск подстроки Строка-Ло в самой себе даёт nil;
Поиск подстроки Строка-Л в самой себе даёт nil;
Поиск подстроки Строка- в самой себе даёт 1;
Поиск подстроки Строка в самой себе даёт 1;
Поиск подстроки Строк в самой себе даёт 1;

Смотрю в документацию по find():  
-- Ищет вхождение подстроки в строку и возвращает индекс начала вхождения, или nil, если совпадение не найдено
-- В строке поиска можно использовать регулярные выражения

Получается, что если в моей строке содержится "-" и далее символ, то это рассматривается как регулярное выражение?
Если да, то как использовать find() или что-то вместо неё, чтобы подстрока интерпретировалась как подстрока, а не рег.выражение?
 
Здравствуйте,
Попробуйте так

Код
         k="Строка-Демо"
         while k:len()>1 do
            t=k:find(k, 1, true)
            message("Поиск подстроки "..k.." в самой себе даёт "..tostring(t))
            k=k:sub(1,-2)
         end     
 
Более подробно
StringLibraryTutorial
 
Спасибо, сработало!
Значит, не в ту документацию смотрел:))
Страницы: 1
Читают тему
Наверх