Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Малыхина. Массивы....doc
Скачиваний:
22
Добавлен:
22.05.2015
Размер:
502.27 Кб
Скачать

11.4 Класс StringBuilder

Достаточно широкие возможности класса System.String, к сожалению, не могут покрыть все потребности процесса обработки строковой информации. Главным ограничивающим препятствием здесь является требование неизменности его объектов.

В том случае, когда строку все же необходимо изменить, для работы со строками удобно применять другой класс – класс StringBuilder. Данный класс, позволяющий изменять значение своих экземпляров, определен в пространстве именSystem.Text.

При создании экземпляра обязательно использовать операцию newи конструктор, например:

StringBuilder s = new StringBuilder();

Подобная инициализация является наиболее простой – в ней отсутствуют инициализирующие параметры, которые в данном случае принимают значения по умолчанию. При этом создается пустая строка размером 16 байт.

В общем случае в конструкторе класса могут присутствовать два вида параметров. Первый вид параметров используется для инициализации строки, второй – для определения объема памяти (размера буфера), отводимой под экземпляр, например:

StringBuilder stud = new StringBuilder( "student", 50 );

При необходимости в целях экономии памяти размер буфера можно уменьшить с помощью свойства Сарасity. Если же в процессе работы программы вследствие выполнения некоторых методов получена строка, размер которой превышает текущий размер буфера, то размер буфера автоматически будет увеличен.

Емкость буфера, не соответствующая количеству символов в строке, может увеличиваться и в результате прямых указаний программиста.

Впрочем, один или оба параметра (как уже было сказано, и как видно из первого примера) могут отсутствовать.

В следующем примере приведен еще один вид конструктора, где задан объем памяти, выделяемой строке, и ее начальное значение. Объект инициализируется подстрокой длиной 4 символа, начиная с первого (подстрока "stud ").

StringBuilder stud = new StringBuilder( "student", 1, 4, 50 );

Основные элементы класса StringBuilderприведены в таблице 11.3.

Пример 6. Демонстрация использования методов классаSystem.Text.StringBuilder.

Листинг 6

using System;

using System.Text;

namespace ConsoleApplication1

{ class Program

{ static void Main()

{ string s;

StringBuilder w = new StringBuilder();

w.Append( "снег,лед,гололед,дождь " );

Console.WriteLine(w);

w.Insert(5,"солнце,");

Console.WriteLine(w);

Console.WriteLine("Введите построку");

s=Console.ReadLine();

w.Insert(0,s);

Console.WriteLine(w);

w.Replace( ",", ";" );

Console.WriteLine(w);

}

}

}

Включив в программу строку using System.Textмы тем самым сделали доступным классStringBuilder, определенный в его пространстве имен.

В программе объявлены две строки: s-статическая иw-динамическая. Поскольку строкаwне инициализирована, то вызов методаw.Append("снег,лед,гололед,дождь")преобразует строку, поместив в нее указанную в методе строку.

Вызов метода w.Insert(5,"солнце,")обеспечивает вставку подстроки"солнце,"в строкуw, начиная с позиции5.

Вызов метода w.Insert(0,s)обеспечивает вставку подстрокиs(белый,) в строкуw, начиная с позиции0.

Вызов метода w.Replace(",",";")производит замену всех вхождений символа","новым символом";".

Результаты работы программы:

Таблица 11.3 Основные элементы класса System.Text.StringBuilder

Название

Вид

Описание

Append

Метод

Добавление в конец строки. Например: w.Append("снег") – в конец строки w добавлен текст "снег"

AppendFormat

Метод

Добавление форматированной строки в конец строки

Capacity

Свойство

Получение или установка емкости буфера. Если устанавливаемое значение меньше текущей длины строки или больше максимального, генерируется исключение ArgumentOutOfRangeException

Insert

Метод

Вставка подстроки в заданную позицию. Например: w.Insert(5, "солнце") – вставка подстроки "солнце", начиная с 5-ой позиции строки w

Length

Свойство

Длина строки (количество символов)

MaxCapacity

Свойство

Максимальный размер буфера

Remove

Метод

Удаление подстроки из заданной позиции. Например: w.Remove(i, 3) – удаление подстроки длиной 3 символа, начиная с позиции с номером i

Replace

Метод

Замена всех вхождений заданной подстроки или символа новой подстрокой или символом. Например:

w.Replace(",", ";") – замена всех "," на ";".

w.Replace(",", "") – удалит все "," без замены

ToString

Метод

Преобразование в строку типа string. Например: w.ToString()