Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Рекурсивный поиск с помощью функции Pos

Delphi , Синтаксис , Текст и Строки

Рекурсивный поиск с помощью функции Pos

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

function PosN(Substring, Mainstring: string; n: Integer): Integer;

 { 
Function PosN ermittelt rekursiv - die N te Position von 
"Substring" in "Mainstring". Ist der String nicht enthalten, 
Ergebnis 0. Falls N zu hoch ist, wird das letzte gefundene 
Vorkommen angezeigt. Funktioniert mit Chars und Strings 
}

 { 
Function PosN get recursive - the N th position of "Substring" in 
"Mainstring". Does the Mainstring not contain Substrign the result 
is 0. Works with chars and strings. 
}
 begin
   if Pos(substring, mainstring) = 0 then
    begin
      posn := 0;
      Exit;
    end
   else
   begin
     if n = 1 then posn := Pos(substring, mainstring)
      else
     begin
       posn := Pos(substring, mainstring) + posn(substring, Copy(mainstring,
         (Pos(substring, mainstring) + 1), Length(mainstring)), n - 1);
     end;
   end;
 end;

 //Beispiele / Examples 

  i := posn('s', 'swissdelphicenter.ch', 2);
   //  i=4 



  i := posn('x', 'swissdelphicenter.ch', 1);
   //  i=0 


  i := posn('delphi', 'swissdelphicenter.ch', 1);
   //  i=6 

Вот перевод контента на русский язык:

Функция PosN, которая рекурсивно находит N-ое положение указанного подстроки в основной строке.

Сигнатура функции

function PosN(Substring, Mainstring: string; n: Integer): Integer;
  • Substring: искомая подстрока.
  • Mainstring: основная строка, в которой производится поиск.
  • n: номер положения (1-основанный) для поиска подстроки.

Тело функции Если подстрока не найдена в основной строке, функция возвращает 0.

if Pos(Substring, Mainstring) = 0 then
begin
  posn := 0;
  Exit;
end

Если подстрока найдена, функция проверяет, равно ли n 1. Если это так, она просто возвращает позицию первого вхождения подстроки с помощью встроенной функции Pos.

if n = 1 then posn := Pos(Substring, Mainstring)

Если n больше 1, функция вызывает себя рекурсивно с параметрами:

  • Той же самой подстрокой.
  • Новой основной строкой, которая начинается от позиции после предыдущего вхождения подстроки.
  • n - 1, поскольку мы уже посчитали одно вхождение.
posn := Pos(Substring, Mainstring) + posn(Substring, Copy(Mainstring, (Pos(Substring, Mainstring) + 1), Length(Mainstring)), n - 1);

Примеры Предоставленные примеры демонстрируют использование этой функции:

  • i := posn('s', 'swissdelphicenter.ch', 2); находит второе вхождение 's' и возвращает 4.
  • i := posn('x', 'swissdelphicenter.ch', 1); находит первое вхождение 'x', но не находит, поэтому возвращает 0.
  • i := posn('delphi', 'swissdelphicenter.ch', 1); находит первое вхождение 'delphi' и возвращает 6.

В целом, эта функция - полезный инструмент для поиска конкретных шаблонов или подстрок в более крупных строках.

Функция PosN реализует рекурсивный поиск и находит N-ю позицию подстроки в основной строке, если подстрока не найдена, то функция возвращает 0.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Текст и Строки ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:07:01/0.0056831836700439/1