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

Преобразование строки с разделителями в StringList

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

Преобразование строки с разделителями в StringList

Автор: Игорь Шевченко
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Преобразование строки с разделителями в StringList.

Преобразование строки с разделителями в StringList или наследник TStrings.
Навеяно одноименной процедурой из InfoPower :-)

Зависимости: Classes
Автор:       Игорь Шевченко, whitefranz@hotmail.com, Москва
Copyright:   Игорь Шевченко, Woll2Woll software (original)
Дата:        30 апреля 2002 г.
***************************************************** }

procedure StrBreakApart(const S, Delimeter: string; Parts: TStrings);
var
  CurPos: integer;
  CurStr: string;
begin
  Parts.clear;
  Parts.BeginUpdate();
  try
    CurStr := S;
    repeat
      CurPos := Pos(Delimeter, CurStr);
      if (CurPos > 0) then
      begin
        Parts.Add(Copy(CurStr, 1, Pred(CurPos)));
        CurStr := Copy(CurStr, CurPos + Length(Delimeter),
          Length(CurStr) - CurPos - Length(Delimeter) + 1);
      end
      else
        Parts.Add(CurStr);
    until CurPos = 0;
  finally
    Parts.EndUpdate();
  end;
end;

Пример использования:

var
  Tmp: StringList;
begin
  Tmp := TStringList.Create();
  StrBreakApart('Text1<BR>Text2<BR>Text3<BR>Text4', '<BR>', Tmp);
  // После вызова Tmp содержит
  // Text1
  // Text2
  // Text3
  // Text4
  ...
  Tmp.Free();
end;

Программный код на Delphi, который конвертирует строку с разделителями в список TStrings или его наследника, например, StringList. Функция StrBreakApart принимает три параметра: входную строку S, разделитель Delimeter и целевой объект TStrings Parts.

Обзор кода:

  1. Процедура начинает с очистки списка Parts с помощью метода Clear.
  2. Затем она начинается обновлять список Parts с помощью метода BeginUpdate.
  3. В блоке try-except функция итерирует через входную строку S, пока не найдет разделитель Delimeter. Когда он найден, добавляет подстроку перед разделителем в список Parts с помощью метода Add. Оставшаяся часть строки обновляется удалением разделителя и любых trailing символов.
  4. Если разделитель не найден на текущей позиции, вся входная строка добавляется в список Parts.
  5. Когда итерация completa, функция заканчивает обновление с помощью метода EndUpdate.

Пример использования показывает, как создать объект StringList и использовать процедуру StrBreakApart, чтобы разделить строку с <BR> разделителями на отдельные строки.

Альтернативное реализация с использованием регулярных выражений:

uses
  RegExpr;

procedure StrBreakApart(const S, Delimeter: string; Parts: TStrings);
var
  RE: TRegEx;
begin
  Parts.Clear;
  RE := TRegEx.Create('([^' + Delimeter + ']+)');
  try
    if RE.Match(S) then
      repeat
        Parts.Add(RE.Groups[1].Value);
      until not RE.Match();
  finally
    RE.Free;
  end;
end;

В этой реализации используется класс TRegEx из единицы RegExpr, чтобы создать регулярное выражение, которое matches one or more characters that are not the delimiter. Метод Match затем используется для итерации через входную строку, и каждый match добавляется в список Parts.

Процедура StrBreakApart преобразует строку с разделителями в StringList, разделяя ее на подстроки используя заданный символ разделения.


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

Получайте свежие новости и обновления по 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:27:47/0.0058338642120361/1