![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Поиск N-ого вхождения подстроки в строкуDelphi , Синтаксис , Текст и Строки
Автор: Panov { **** UBPFD *********** by delphibase.endimus.com **** >> Зависимости: SysUtils Автор: panov, panov@hotbox.ru, Екатеринбург Copyright: panov Дата: 19 апреля 2002 г. ***************************************************** } function SearchString(const FindStr, SourceString: string; Num: Integer): Integer; var FirstSym: PChar; //Ссылка на первый символ function MyPos(const FindStr, SourceString: PChar; Num: Integer): PChar; begin Result := AnsiStrPos(SourceString, FindStr); //Поиск вхождения подстроки в строку if (Result = nil) then Exit; //Подстрока не найдена Inc(Result); //Смещаем указатель на следующий символ if Num = 1 then Exit; //Если нужно первое вхождение - заканчиваем if num > 1 then Result := MyPos(FindStr, Result, num - 1); //Рекурсивный поиск следующего вхождения end; begin FirstSym := PChar(SourceString); //Присваиваем адрес первого символа исходной строки Result := MyPos(PChar(FindStr), PChar(SourceString), Num) - FirstSym; //Номер позиции в строке if Result < 0 then Result := 0; //Возвращаем номер позиции end; Пример использования: var StrF, StrSrc: string; n: Integer; begin ... StrF := 'стр'; StrSrc := 'Поиск подстроки в строке'; n := SearchString(StrF, StrSrc, 2); //n будет равна 19 end; Программа на Delphi для поиска N-го вхождения подстроки в строке. Функции и переменные
Код Функция
Функция
Пример использования Пример кода создает две строки ( В целом, эта программа эффективно ищет N-е вхождение подстроки в строке с помощью рекурсии. В статье описана функция SearchString на языке Delphi, которая ищет N-ое вхождение подстроки FindStr в строку SourceString. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Текст и Строки ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |