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

Разбивка строки на подстроки с использованием заданного разделителя

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



Автор: Stoma
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> 
Параметры: Str: WideString - Строка для разбивки
Delimiter: String - Разделитель подстрок с строке Str
Результат: TStringList: Список найденных подстрок

Зависимости: System, Sysutils, Classes
Автор:       Stoma, stoma@bitex.bg
Copyright:   Собственная разработка
Дата:        4 августа 2003 г.
***************************************************** }

function Tokenize(Str: WideString; Delimiter: string): TStringList;
var
  tmpStrList: TStringList;
  tmpString, tmpVal: WideString;
  DelimPos: LongInt;
begin
  tmpStrList := TStringList.Create;
  TmpString := Str;
  DelimPos := 1;
  while DelimPos > 0 do
  begin
    DelimPos := LastDelimiter(Delimiter, TmpString);
    tmpVal := Copy(TmpString, DelimPos + 1, Length(TmpString));
    if tmpVal <> '' then
      tmpStrList.Add(UpperCase(tmpVal));
    Delete(TmpString, DelimPos, Length(TmpString));
  end;
  Tokenize := tmpStrList;
end;

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

function TForm1.GetDirNames(FullPath: string): TStringList;
begin
  GetDirNames := Tokenize(FullPath, '\');
end;

Программный код на языке Delphi!

Функция Tokenize принимает два параметра:

  • Str: WideString, представляющий входную строку для разделения.
  • Delimiter: String, представляющий символ-разделитель для разделения строки.

Функция возвращает TStringList, содержащий разбитые подстроки.

Вот шаг за шагом, что код делает:

function Tokenize(Str: WideString; Delimiter: string): TStringList;

Функция Tokenize объявлена с двумя параметрами Str и Delimiter, оба типа WideString и String, соответственно.

var
  tmpStrList: TStringList;
  tmpString, tmpVal: WideString;
  DelimPos: LongInt;

Функция объявляет четыре переменные:

  • tmpStrList: объект TStringList, используемый для хранения разбитых подстрок.
  • tmpString: переменная WideString для временного хранения входной строки.
  • tmpVal: переменная WideString для временного хранения каждой подстроки.
  • DelimPos: переменная LongInt, используемая для хранения позиции разделителя в входной строке.
tmpStrList  := TStringList.Create;
TmpString  := Str;
DelimPos  := 1;
while DelimPos > 0 do
begin
  DelimPos  := LastDelimiter(Delimiter, TmpString);
  tmpVal  := Copy(TmpString, DelimPos + 1, Length(TmpString));
  if tmpVal <> '' then
    tmpStrList.Add(UpperCase(tmpVal));
  Delete(TmpString, DelimPos, Length(TmpString));
end;

Функция использует цикл while для прохода по входной строке, пока не будет найден разделитель. В каждом шаге цикла:

  1. Найдена позиция разделителя в текущей входной строке с помощью LastDelimiter.
  2. Копируется подстрока, начиная от позиции разделителя + 1 до конца входной строки.
  3. Если копированная подстрока не пуста, добавляется верхнеケースовая подстрока в tmpStrList.
  4. Удаляется подстрока, найденная в шаге 2 из входной строки.
Tokenize := tmpStrList;

Наконец, функция возвращает TStringList, содержащий разбитые подстроки.

Пример использования функции для разделения полного пути на имена директорий с помощью символа \ как разделителя:

function TForm1.GetDirNames(FullPath: string): TStringList;
begin
  GetDirNames := Tokenize(FullPath, '\');
end;

Это простой и эффективный способ разделения строки с использованием конкретного разделителя. Хорошая работа, Stoma!

Разбивка строки на подстроки с использованием заданного разделителя - функция Delphi, которая разбивает строку на подстроки в соответствии с указанным разделителем и возвращает список найденных подстрок.


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

Получайте свежие новости и обновления по 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:43:54/0.0058081150054932/0