Строки типа StringBuilder
Возможности, предоставляемые классом string, широки, однако требование неизменности его объектов может оказаться неудобным. В этом случае для работы со строками применяется класс StringBuilder, определенный в пространстве имен System. Text и позволяющий изменять значение своих экземпляров.
При создании экземпляра обязательно использовать операцию new и конструктор, например:
StringBuilder a = new StringBuilder(); //1
StringBuilder b = new StringBuilder( "qwerty" ); //2
StringBuilder с = new StringBuilder( 100 ); //3
StringBuilder d = new StringBuilder( "qwerty", 100 ); //4
StringBuilder e = new StringBuilder( "qwerty", 1, 3, 100 ); //5
В конструкторе класса указываются два вида параметров: инициализирующая строка или подстрока и объем памяти, отводимой под экземпляр. Один или оба параметра могут отсутствовать, в этом случае используются их значения по умолчанию.
Если применяется конструктор без параметров (оператор 1), создается пустая строка размера, заданного по умолчанию (16 байт). Другие виды конструкторов задают объем памяти, выделяемой строке, и/или ее начальное значение. Например, в операторе 5 объект инициализируется подстрокой длиной 3 символа, Начиная с первого (подстрока "wer"). Основные элементы класса StringBuilder приведены в таблице 8.4.
Таблица 8.4 - Основные элементы класса System.Text.StringBuilder
Метод | Описание |
Append | Добавление в конец строки. Разные варианты метода позволяют добавлять в строку величины любых встроенных типов, массивы символов, строки и подстроки типа string |
AppendFormat | Добавление форматированной строки в конец строки |
Capacity | Получение или установка емкости буфера. Если устанавливаемое значение меньше текущей длины строки или больше максимального, генерируется исключение |
Insert | Вставка подстроки в заданную позицию |
Length | Длина строки (количество символов) |
MaxCapacity | Максимальный размер буфера |
Remove | Удаление подстроки из заданной позиции |
Replасе | Замена всех вхождений заданной подстроки или символа новой подстрокой или символом |
ToString | Преобразование в строку типа String |
Пример обработки строк типа StringBuilder
using System;
using System.Text;
namespace ConsoleApplicationl
{ class Classl
{ static void Main()
{
Console.Write( "Введите зарплату: " );
double salary = double.Parse( Console.ReadLine());
StringBuilder a = new StringBuilder();
a.Append( "зарплата " );
a.AppendFormat( "{0, 6:C} - в год {1, 6:C}", salary, salary * 12 );
Console.WriteLine( a );
a.Replace( "p.", "тыс.$" );
Console.WriteLine( "А лучше было бы: " + a ); } } }
Емкость буфера не соответствует количеству символов в строке и может увеличиваться в процессе работы программы. Программист может уменьшить размер буфера с помощью свойства Capacity, чтобы не занимать лишнюю память.
Пример программы
#region Лаба 5 работа по строкам Сокращение ФИО до Фамилии + Инициалы
static void laba5()
{
Console.WriteLine("Работа со строками");
string fio="Nataly Nekk Serd",i="",o="";//Объявление ФИО
int j=0,s;
bool il=false,ol=false;
Console.WriteLine("Исходная ФИО: "+fio);
s= fio.IndexOf(" "); // Получаю длину фамилии
while (fio.Length > j)
{
if ((fio[j] == ' ')&(il== false)) // Получаем первую букву имени
{
i=fio[j+1].ToString();
il= true;
}
else if ((fio[j]==' ')&(ol==false)) // Получаем первую букву отчества
{
o=fio[j+1].ToString();
ol=true;
}
j++;
}
fio = fio.Remove(s)+" "+i+"."+o+".";//обрезаю ФИО до фамилии и присоединяю //инициалы
Console.WriteLine("После обработки: "+fio);// Вывожу на экран результат
}
#endregion
static void laba2()
{
char[] delimiterChars = {' '};//разделители
Console.WriteLine("Поехали делать вторую лабу");
string myString1 = "Nataly Nekk Serd"; //ФИО
Console.WriteLine(myString1);
string[] myS = myString1.Split(delimiterChars);//Разделение строки с //использованием разделителей на выходе будет массив
Console.WriteLine("Фамилия " + myS[0] + " Имя " + myS[1] + " Отчество " + myS[2]);
Console.WriteLine("Получилось: "+myS[0]+" "+myS[1].Remove(1)+"."+myS[2].Remove(1)+"."); На выходе ФИО плюс инициалы
}
#endregion
Дата добавления: 2015-08-21; просмотров: 547;