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

Функция, возвращающая текст между двумя определёнными строками

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

Функция, возвращающая текст между двумя определёнными строками


Procedure IsolateText( Const S: String; Tag1, Tag2: String; list:TStrings );
  Var
    pScan, pEnd, pTag1, pTag2: PChar;
    foundText: String;
    searchtext: String;
  Begin
    { Set up pointers we need for the search. HTML is not case sensitive, so
      we need to perform the search on a uppercased copy of S.}
    searchtext := Uppercase(S);
    Tag1:= Uppercase( Tag1 );
    Tag2:= Uppercase( Tag2 );
    pTag1:= PChar(Tag1);
    pTag2:= PChar(Tag2);
    pScan:= PChar(searchtext);
    Repeat
      { Search for next occurence of Tag1. }
      pScan:= StrPos( pScan, pTag1 );
      If pScan <> Nil Then Begin
        { Found one, hop over it, then search from that position
          forward for the next occurence of Tag2. }
        Inc(pScan, Length( Tag1 ));
        pEnd := StrPos( pScan, pTag2 );
        If pEnd <> Nil Then Begin
          { Found start and end tag, isolate text between,
            add it to the list. We need to get the text from
            the original S, however, since we want the un-uppercased
            version! So we calculate the address pScan would hold if
            the search had been performed on S instead of searchtext. }
          SetString( foundText, 
                     Pchar(S) + (pScan- PChar(searchtext) ),
                     pEnd - pScan );
          list.Add( foundText );

          { Continue next search after the found end tag. }
          pScan := pEnd + Length(tag2);
        End { If }
        Else { Error, no end tag found for start tag, abort. }
          pScan := Nil;
      End; { If }
    Until pScan = Nil;
  End;

Программный процесс IsolateText, написанный на языке Delphi, ищет текст между двумя конкретными строками (Tag1 и Tag2) в заданной строке (S). Найденный текст добавляется в список строк (list: TStrings).

Обзор кода:

  1. Процедура принимает четыре параметра:
    • S: Входная строка.
    • Tag1, Tag2: Две метки, которые определяют начало и конец текста для изоляции.
    • list: Список строк, в который будет добавлен найденный текст.
  2. Первая часть кода настраивает переменные и выполняет некоторые предварительные операции:
    • Она преобразует входную строку (S) в верхний регистр с помощью функции Uppercase и присваивает ее новой переменной searchtext.
    • Она также преобразует две метки (Tag1 и Tag2) в верхний регистр и присваивает их новым переменным.
  3. Основная часть процедуры - это повторяющийся цикл, который ищет вхождения Tag1 в входную строку:
    • Он использует функцию StrPos для поиска позиции следующего вхождения Tag1.
    • Если вхождение найдено, он увеличивает указатель pScan на длину Tag1 и затем ищет следующее вхождение Tag2.
    • Если обе метки найдены, он изолирует текст между ними с помощью аналогичного процесса, как в шаге 3.
  4. Изолированный текст добавляется в список (list) с помощью метода Add.
  5. Цикл продолжается, пока не будет найдено больше вхождений Tag1.

Предложения по улучшению:

  • Рассмотрите использование регулярных выражений вместо простых строковых поисков, особенно если метки сложные или содержат специальные символы.
  • Вам может потребоваться добавление обработки ошибок для случаев, когда входная строка неproperly форматирована или метки не могут быть найдены.
  • Процедура предполагает, что входная строка - это одиночная строка; если вам нужно искать текст в нескольких строках, рассмотрите использование болееadvanced библиотеки для поиска текста.
  • Переменные pScan, pEnd и pTag1 не очень описательны; рассмотрите переименование их в something like tagStartPointer, endTagPointer и tag1Pointer.
  • Вам может потребоваться добавление комментариев или документации, чтобы объяснить цель процедуры и ее работу.

Функция IsolateText возвращает текст между двумя определёнными строками (тэгами) из входной строки, выполняя поиск с учётом регистра.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-04-04 05:55:00/0.0056819915771484/0