поиск в строке по частичному совпадению

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

поиск в строке по частичному совпадению

Сообщение Espada »

Доброго дня. Такой вопрос, существует ли возможность частичного поиска в строке? ф-я InStr, работает только если полное совпадение. а у меня проблема, что в переменной строка из нескольких слов, и нужно что бы искало хотя бы по паре из них... спасибо.
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Irina_
Местный житель
Сообщения: 554
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: поиск в строке по частичному совпадению

Сообщение Irina_ »

Здравствуйте.
Instr – ф-ция нахождения подстроки.
Если в Вашем случае строка из нескольких слов, и нужен поиск одновременно по двум подстрокам, то используйте ф-цию 2 раза:
If ( Instr(str1,str) > 0 ) and ( Instr(str2,str) > 0 )
{
...
}
где str – исходная строка, str1 и str2 - две подстроки, наличие которых надо проверить.
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

Re: поиск в строке по частичному совпадению

Сообщение Espada »

Irina_ писал(а):где str – исходная строка, str1 и str2 - две подстроки, наличие которых надо проверить.
хмм, т.е. разделить строку, которую надо найти, на слова, записать их в переменные, и искать по ним... Идея интересная, буду пробовать, спасибо)
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
KVS
Посетитель
Сообщения: 36
Зарегистрирован: 03 фев 2020, 10:38

Re: поиск в строке по частичному совпадению

Сообщение KVS »

Если нужно просто проверить наличие подстрок в строке (проверка строки по регулярному выражению), то может помочь:

Код: Выделить всё

Function VIPRegExpr (  ARegExpr  : String,  AInputStr : String) : Boolean; external 'WordLib.dll';

Код: Выделить всё

Function VIPRegExpr ('несколько\s*слов\s*через.*пробелы', 'несколько           слов   через еще строка        пробелы') = true 
, где \s* от 0 до бесконечности количество пробелов, .* от нуля до бесконечности любых символов
Ответить