Класс StringBuilder
Класс StringBuilder из пространства имён
System.Text хранит изменяемый буфер
символов. В отличие от типа string,
содержимое буфера меняют на месте: дописывают,
вставляют и вырезают фрагменты без создания
новой строки на каждом шаге. Объект создают
конструктором без параметров, с начальной
строкой "abcde" или с числом - желаемым
запасом буфера.
Синтаксис
StringBuilder sb = new StringBuilder();
StringBuilder sb = new StringBuilder("abcde");
StringBuilder sb = new StringBuilder(32);
Пример
Давайте соберём текст методом Append
и получим строку через ToString:
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder("abc");
sb.Append("de");
Console.WriteLine(sb.ToString());
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте изменим символ через индексатор и допишем ещё текст цепочкой вызовов:
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder("abcde");
sb[0] = 'z';
sb.Append("12345").Append('!');
Console.WriteLine(sb.ToString());
}
}
Результат выполнения кода:
"zbcde12345!"
Пример
Давайте вставим фрагмент в середину буфера
методом Insert:
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder("abcde");
sb.Insert(2, "12345");
Console.WriteLine(sb.ToString());
}
}
Результат выполнения кода:
"ab12345cde"
Пример
Давайте вырежем часть буфера и заменим остаток другим текстом:
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder("abcde");
sb.Remove(1, 3);
sb.Replace("e", "12345");
Console.WriteLine(sb.ToString());
}
}
Результат выполнения кода:
"a12345"