unit StrFuncs;
interfaceuses SysUtils, Classes;
function StrToArrays(str, r: string; out temp: TStrings): Boolean;
function ArrayToStr(str: TStrings; r: string): string;
implementationfunction StrToArrays(str, r: string; out temp: TStrings): Boolean;
var
j: Integer;
beginif temp <> nilthenbegin
temp.Clear;
while str <> '' dobegin
j := Pos(r, str);
if j = 0 then j := Length(str) + 1;
temp.Add(Copy(Str, 1, j - 1));
Delete(Str, 1, j + Length(r) - 1);
end;
Result := True;
else
Result := False;
end;
end;
function ArrayToStr(str: TStrings; r: string): string;
var
i: Integer;
begin
Result := '';
for i := 0 to Str.Count - 1 dobegin
Result := Result + Str.Strings[i] + r;
end;
end;
end.
Перевод контента на русский язык:
Это модуль Delphi, содержащий два функционала:
StrToArrays: Функция принимает строку, разделитель (r) и параметр вывода типа TStrings. Она разбивает входную строку на отдельные слова, используя указанный разделитель, и хранит их в объекте TStrings. Функция возвращает булевое значение, указывающее, была ли операция успешной.
ArrayToStr: Функция принимает входной объект TStrings и разделитель (r), и возвращает одиночную строку, которая является конкатенацией всех строк в входном объекте TStrings, разделенных указанным разделителем.
Вот пример использования этих функций:
varstr:string;temp:TStrings;str:='Hello,World!';temp:=TStringList.Create();ifStrToArrays(str,',',temp)thenbeginfori:=0totemp.Count-1doWriteLn(temp[i]);end;WriteLn('Separated by ,');WriteLn(ArrayToStr(temp,','));FreeAndNil(temp);
Код разбивает строку 'Hello,World!' на отдельные слова, используя запятую как разделитель, и хранит их в объекте temp. Затем он печатает каждое слово на новой строке. Наконец, он конкатенирует все слова обратно вместе, используя тот же разделитель, и печатает полученную строку.
Замечание: В Delphi вам нужно использовать WriteLn вместо println для печати строк с символом новой строки в конце.
Имущества:
Вместо проверки, является ли temp не nil перед вызовом Clear, вы можете просто вызвать Clear и затем проверить, является ли temp.Count > 0 в случае, если StrToArrays не может разбить строку.
В функции ArrayToStr вместо конкатенации всех строк вместе с помощью Result := Result + Str.Strings[i] + r;, вы можете использовать цикл, который итерирует по всем строкам в str и добавляет каждую к Result. Это более эффективно для больших входных данных.
Альтернативное решение:
Вы также можете использовать функцию Split из модуля System.SysUtils, которая разбивает строку на массив подстрок, используя указанный разделитель. Вот пример использования:
Код использует функцию Split для разбивания входной строки на отдельные слова, используя запятую как разделитель. Затем он печатает каждое слово на новой строке, и наконец, освобождает объект TStringList.
Данная статья описывает два функционала на языке Delphi: StrToArrays, который разбивает строку на отдельные слова и ArrayToStr, обратный процесс - сборку строк из отдельных слов.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.