Стандартный класс StringBuilder — различия между версиями
Ulysses (обсуждение | вклад) м (→Назначение) |
Ulysses (обсуждение | вклад) м (→Пример: + uses System.Text) |
||
Строка 4: | Строка 4: | ||
==Пример== | ==Пример== | ||
Приведём подпрограмму для решения такой задачи: с консоли вводится последовательность строк, завершающаяся пустой строкой. Создать строку, получающуюся объединением строк, введённых с консоли. | Приведём подпрограмму для решения такой задачи: с консоли вводится последовательность строк, завершающаяся пустой строкой. Создать строку, получающуюся объединением строк, введённых с консоли. | ||
− | <source lang="pascal">function ConcatInput : string; | + | <source lang="pascal">uses System.Text; |
+ | |||
+ | //... | ||
+ | |||
+ | function ConcatInput : string; | ||
begin | begin | ||
var sb := new System.Text.StringBuilder(); | var sb := new System.Text.StringBuilder(); |
Версия 11:50, 25 мая 2011
Назначение
Часто возникает необходимость в последовательной модификации некоторой строки (например, при чтении набора строк с консоли и объединении их в одну строку). Стандартный тип string PascalABC.NET и его операция += неэффективны в таких ситуациях (происходит многократное создание новых объектов строк). Для этого случая в пространстве имён System.Text имеется специальный класс StringBuilder. Результирующая строка хранится внутри этого класса, модифицируется с помощью методов этого класса, а перед окончанием работы получается вызовом метода ToString класса StringBuilder.
Пример
Приведём подпрограмму для решения такой задачи: с консоли вводится последовательность строк, завершающаяся пустой строкой. Создать строку, получающуюся объединением строк, введённых с консоли.
uses System.Text;
//...
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;