Стандартный класс StringBuilder

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск

Назначение

Часто возникает необходимость в последовательной модификации некоторой строки (например, при чтении набора строк с консоли и объединении их в одну строку). Стандартный тип string PascalABC.NET и его операция += неэффективны в таких ситуациях (происходит многократное создание новых объектов строк). Для этого случая в пространстве имён System.Text имеется специальный класс StringBuilder. Результирующая строка хранится внутри этого класса, модифицируется с помощью методов этого класса, а перед окончанием работы получается вызовом метода ToString класса StringBuilder.

Пример

Приведём подпрограмму для решения такой задачи: с консоли вводится последовательность строк, завершающаяся пустой строкой. Создать строку, получающуюся объединением строк, введённых с консоли.

function ConcatInput : string;
begin
  var sb := new System.Text.StringBuilder();
  var line : string;
  while true do
  begin
    Readln(line);
    if line = '' then
      break;
    sb.Append(line); // аналог +=
  end;
  result := sb.ToString; // преобразование sb к строке
end;