Класс StringBuilder - построитель строк

Строковый класс StringBuilder позволяет компенсировать этот недостаток класса String. Этот класс принадлежит к изменяемым классам и его можно найти в пространстве имен System.Text.

Объекты класса объявляются с явным вызовом конструктора класса. Поскольку специальных констант этого типа не существует, то вызов конструктора для инициализации объекта просто необходим. Конструктор класса перегружен, и наряду с конструктором без параметров, создающим пустую строку, имеется набор конструкторов, которым можно передать две группы параметров.

Первая группа позволяет задать строку или подстроку, значением которой будет инициализироваться создаваемый объект класса StringBuilder.

Вторая группа параметров позволяет задать емкость объекта - объем памяти, отводимой данному экземпляру класса StringBuilder. Каждая из этих групп не является обязательной и может быть опущена.

public StringBuilder (string str, int cap). Параметр str задает строку инициализации, cap - емкость объекта;

public StringBuilder (int curcap, int maxcap). Параметры curcap и maxcap задают начальную и максимальную емкость объекта;

public StringBuilder (string str, int start, int len, int cap). Параметры str, start, len задают строку инициализации, cap - емкость объекта.

Над строками этого класса определены практически те же операции с той же семантикой, что и над строками класса String:

- присваивание (=);

- две операции проверки эквивалентности (= =) и (!=);

- взятие индекса ([]).

Операция конкатенации (+) не определена над строками класса StringBuilder, ее роль играет метод Append, дописывающий новую строку в хвост уже существующей.

Со строкой этого класса можно работать как с массивом, но, в отличие от класса String, здесь уже все делается как надо: допускается не только чтение отдельного символа, но и его изменение.

 

// Программа 6. Строки класса StringBuilder

public void TestStringBuilder(){

StringBuilder s1 =new StringBuilder("ABC"), s2 =new StringBuilder("CDE");

StringBuilder s3 = new StringBuilder();

s3= s1.Append(s2);

bool b1 = (s1==s3);

char ch1 = s1[0], ch2=s2[0];

Console.WriteLine("s1={0}, s2={1}, b1={2}," + "ch1={3}, ch2={4}", s1,s2,b1,ch1,ch2);

s2 = s1;

b1 = (s1!=s2);

ch2 = s2[0];

Console.WriteLine("s1={0}, s2={1}, b1={2}," +"ch1={3}, ch2={4}", s1,s2,b1,ch1,ch2);

StringBuilder s = new StringBuilder("Zenon");

s[0]='L';

Console.WriteLine(s);

}

 

У класса StringBuilder методов значительно меньше, чем у класса String. Основные методы позволяют выполнять такие операции над строкой как вставка, удаление и замена подстрок.

public StringBuilder Append (<объект>). К строке, вызвавшей метод, присоединяется строка, полученная из объекта, который передан методу в качестве параметра. Метод перегружен и может принимать на входе объекты всех простых типов, начиная от char и bool до string и long. В качестве результата возвращается ссылка на объект, вызвавший метод.

public StringBuilder Insert (int location,<объект>). Метод вставляет строку, полученную из объекта, в позицию, указанную параметром location. Метод Append является частным случаем метода Insert.

public StringBuilder Remove (int start, int len). Метод удаляет подстроку длины len, начинающуюся с позиции start.

public StringBuilder Replace (string str1,string str2). Все вхождения подстроки str1 заменяются на строку str2.

public StringBuilder AppendFormat (<строка форматов>, <объекты>). Метод является комбинацией метода Format класса String и метода Append. Строка форматов, переданная методу, содержит только спецификации форматов. Полученные в результате форматирования строки присоединяются в конец исходной строки.

За исключением метода Remove, все рассмотренные методы являются перегруженными.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: