![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Изменяемые строки
Чтобы создать строку, которую можно изменять, в С# предусмотрен класс StringBuilder, определенный в пространстве имен System.Text. Объекты этого класса всегда объявляются с явным вызовом конструктора класса (через операцию new). Примеры создания изменяемых строк: StringBuilder a =new StringBuilder(); //создание пустой строки, размер по умолчанию 16 символов инициализация строки и выделение необходимой памятиStringBuilder b = new StringBuilder(" abcd"); //создание пустой строки и выделение памяти под 100 символовStringBuilder с = new StringBuilder(100); //инициализация строки и выделение памяти под 100 символов StringBuilder d = new StringBuilder(" abcd", 100); //инициализация подстрокой " bcd", и выделение памяти под 100 символов Основные элементы класса приведены в приложении 8. Как видим, методы класса StringBuilder менее развиты, чем методы класса String, но они позволяют более эффективно использовать память за счет работы с изменяемыми строками. Рассмотрим примеры использования данных методов.static void Main() { try { StringBuilder str=new StringBuilder(" Площадь"); PrintString(str); str.Append(" треугольника равна"); PrintString(str); str.AppendFormat(" {0: f2} см ", 123.456); PrintString(str); str.Insert(8, " данного "); PrintString(str); str.Remove(7, 21); PrintString(str); str.Replace(" а", " о"); PrintString(str); StringBuilder str1=new StringBuilder(Console.ReadLine()); StringBuilder str2=new StringBuilder(Console.ReadLine()); Console.WriteLine(str1.Equals(str2)); } catch { Console.WriteLine(" Вознико исключение"); } }
static void PrintString(StringBuilder a) { Console.WriteLine(" Строка: " +a); Console.WriteLine(" Текущая длина строки " +a.Length); Console.WriteLine(" Объем буфера " +a.Capacity); Console.WriteLine(" Мах объем буфера" + a.MaxCapacity); Console.WriteLine(); } С изменяемой строкой можно работать не только как с объектом, но как с массивом символов: static void Main() { StringBuilder a = new StringBuilder(" 2*3=3*2"); Console.WriteLine(a); int k=0; for (int i = 0; i < a.Length; ++i) if (char.IsDigit(a[i])) k+=int.Parse(a[i].ToString()); Console.WriteLine(k); } На практике часто комбинируют работу с изменяемыми и неизменяемыми строками. Однако если необходимо изменять строку, то в этом случае используют StringBuilder. Контрольные вопросы: 1. Справедливо ли утверждение, что в С# строки являются объектами? 2. Каким образом можно получить значение длины строки? 3. Какие функции выполняет метод Substring()?
|