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

Разделить строку

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

Разделить строку

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

procedure Explode(var a: array of string; Border, S: string);
 var
    S2: string;
   i: Integer;
 begin
   i  := 0;
   S2 := S + Border;
   repeat
     a[i] := Copy(S2, 0,Pos(Border, S2) - 1);
     Delete(S2, 1,Length(a[i] + Border));
     Inc(i);
   until S2 = '';
 end;

 // How to use it: 
// Und hier ein Beispiel zur Verwendung: 

procedure TForm1.Button1Click(Sender: TObject);
 var
    S: string;
   A: array of String;
 begin
   S := 'Ein Text durch Leerzeichen getrennt';
   SetLength(A, 10);
   Explode(A, ' ', S);
   ShowMessage(A[0] + ' ' + A[1] + ' ' + A[2] + ' ' + A[3] + ' ' + A[4]);
 end;

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

Это код программирования Delphi, который разбивает строку в массив строк с помощью указанного символа разделителя. Процедура Explode принимает три параметра: массив для заполнения, символ разделителя и входную строку.

Работа происходит следующим образом:

  1. Она инициализирует две переменные: i (целое число) для отслеживания индекса в массиве, и S2 (строка) как копию входной строки плюс символ разделителя.
  2. Она вступает в цикл, который продолжается до тех пор, пока S2 не станет пустой строкой.
  3. Внутри цикла она извлекает подстроку из S2 до первого вхождения символа разделителя (используя функцию Pos), присваивает ее текущему элементу в массиве (a[i]) и затем удаляет извлеченную подстроку из S2 с помощью процедуры Delete.
  4. Она увеличивает i, чтобы перейти к следующему элементу в массиве.
  5. Когда цикл завершается, процедура Explode возвращает, оставляя массив заполненным подстроками, разделенными символом разделителя.

Пример использования этой процедуры разбивает строку на массив строк с помощью пробелов как символа разделителя. Результатовый массив затем отображается в сообщении.

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

Вместо использования процедур Copy и Delete для манипуляции входной строкой можно использовать функцию String.Split, которая более эффективна и легче для чтения:

procedure Explode(var a: array of string; Border, S: string);
var
  i: Integer;
begin
  SetLength(a, 0); // Очищает массив
  while Pos(Border, S) > 0 do
  begin
    a := a + [Copy(S, 1, Pos(Border, S) - 1)]; // Добавляет подстроку в массив
    Delete(S, 1, Pos(Border, S)); // Удаляет подстроку из оригинальной строки
  end;
  if Length(S) > 0 then // Если остается оставшаяся подстрока после разделения
    a := a + [S]; // Добавляет ее в массив
end;

Эта реализация более компактна и легче для понимания, но может не быть столь эффективной для очень больших входных строк.

В статье описывается процедура Explode на языке 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:47:02/0.0056898593902588/0