Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 9 Текст информ.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
225.79 Кб
Скачать

2.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 приведены в таблице 3.

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

Название

Вид

Описание

Append

Метод

Добавление в конец строки. Разные варианты метода позволяют добавлять в строку величины любых встроенных типов, массивы символов, строки и подстроки типа string

AppendFormat

Метод

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

Capacity

Свойство

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

Insert

Метод

Вставка подстроки в заданную позицию

Length

Свойство

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

MaxCapacity

Свойство

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

Remove

Метод

Удаление подстроки из заданной позиции

Replace

Метод

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

ToString

Метод

Преобразование в строку типа string

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

Листинг 5

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(",",";") производит замену всех вхождений символа "," новым символом ";".

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