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

Расщепить строку в слова и обратно

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

Расщепить строку в слова и обратно


unit StrFuncs;

interface 

uses SysUtils, Classes; 

function StrToArrays(str, r: string; out temp: TStrings): Boolean; 
function ArrayToStr(str: TStrings; r: string): string; 

implementation 


function StrToArrays(str, r: string; out temp: TStrings): Boolean; 
var 
  j: Integer; 
begin 
  if temp <> nil then  
  begin 
    temp.Clear; 
    while str <> '' do  
    begin 
      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 do 
  begin 
    Result := Result + Str.Strings[i] + r; 
  end; 
end; 
end.

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

Это модуль Delphi, содержащий два функционала:

  1. StrToArrays: Функция принимает строку, разделитель (r) и параметр вывода типа TStrings. Она разбивает входную строку на отдельные слова, используя указанный разделитель, и хранит их в объекте TStrings. Функция возвращает булевое значение, указывающее, была ли операция успешной.
  2. ArrayToStr: Функция принимает входной объект TStrings и разделитель (r), и возвращает одиночную строку, которая является конкатенацией всех строк в входном объекте TStrings, разделенных указанным разделителем.

Вот пример использования этих функций:

var
  str: string;
  temp: TStrings;

str := 'Hello,World!';
temp := TStringList.Create();

if StrToArrays(str, ',', temp) then
begin
  for i := 0 to temp.Count - 1 do
    WriteLn(temp[i]);
end;

WriteLn('Separated by ,');
WriteLn(ArrayToStr(temp, ','));

FreeAndNil(temp);

Код разбивает строку 'Hello,World!' на отдельные слова, используя запятую как разделитель, и хранит их в объекте temp. Затем он печатает каждое слово на новой строке. Наконец, он конкатенирует все слова обратно вместе, используя тот же разделитель, и печатает полученную строку.

Замечание: В Delphi вам нужно использовать WriteLn вместо println для печати строк с символом новой строки в конце.

Имущества:

  1. Вместо проверки, является ли temp не nil перед вызовом Clear, вы можете просто вызвать Clear и затем проверить, является ли temp.Count > 0 в случае, если StrToArrays не может разбить строку.
  2. В функции ArrayToStr вместо конкатенации всех строк вместе с помощью Result := Result + Str.Strings[i] + r;, вы можете использовать цикл, который итерирует по всем строкам в str и добавляет каждую к Result. Это более эффективно для больших входных данных.

Альтернативное решение:

Вы также можете использовать функцию Split из модуля System.SysUtils, которая разбивает строку на массив подстрок, используя указанный разделитель. Вот пример использования:

function Split(const S: string; const DelimiterChar: char): TStringList;
begin
  Result := TStringList.Create();
  Result.DelimitedText := S;
  Result.Delimiter := DelimiterChar;
end;

var
  str: string;
begin
  str := 'Hello,World!';
  with Split(str, ',') do
    try
      for i := 0 to Count - 1 do
        WriteLn(Items[i]);
    finally
      Free;
    end;
end.

Код использует функцию Split для разбивания входной строки на отдельные слова, используя запятую как разделитель. Затем он печатает каждое слово на новой строке, и наконец, освобождает объект TStringList.

Данная статья описывает два функционала на языке Delphi: StrToArrays, который разбивает строку на отдельные слова и ArrayToStr, обратный процесс - сборку строк из отдельных слов.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-01-28 05:50:36/0.0034961700439453/0