русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Операции над строками


Дата добавления: 2013-12-23; просмотров: 1018; Нарушение авторских прав


Объявление строк. Конструкторы класса StringBuilder

Класс StringBuilder - построитель строк

Динамические методы класса string

Операции, разрешенные над строками в C#, разнообразны. Методы этого класса позволяют выполнять основные типичные операции - вставку, удаление, замену строк, поиск вхождения подстроки в строку. Класс string наследует методы класса object, частично их переопределяя. Класс string наследует и, следовательно, реализует методы четырех интерфейсов: ICompareable, ICloneable, IConvertible, IEnumerable.

Рассмотрим наиболее характерные методы при работе со строками.

Таблица 7.3. Динамические методы и свойства класса string
Метод Описание
Insert Вставляет подстроку в заданную позицию.
Remove Удаляет подстроку в заданной позиции.
Replace Заменяет подстроку в заданной позиции на новую подстроку.
Substring Выделяет подстроку в заданной позиции.
IndexOf, IndexOfAny, LastIndexOf, LastIndexOfAny Определяются индексы первого и последнего вхождения заданной подстроки или любого символа из заданного набора
StartsWith, EndsWith Возвращается true или false, в зависимости от того, начинается или заканчивается строка заданной подстрокой.
PadLeft, PadRight Выполняет набивку нужным числом пробелов в начале и в конце строки.
Trim, TrimStart, TrimEnd Обратные операции к методам Pad. Удаляются пробелы в начале и в конце строки, или только с одного ее конца.
ToCharArray Преобразование строки в массив символов.

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



Класс string не разрешает изменять существующие объекты. Строковый класс StringBuilder позволяет компенсировать этот недостаток. Этот класс принадлежит к изменяемым классам, и его можно найти в пространстве имен System.Text. Рассмотрим класс StringBuilder подробнее.

Объекты этого класса объявляются с явным вызовом конструктора класса. Поскольку специальных констант этого типа не существует, вызов конструктора для создания и инициализации объекта просто необходим. Конструктор класса перегружен, и наряду с конструктором без параметров, создающим пустую строку, имеется набор конструкторов, которым можно передать две группы параметров. Первая группа позволяет задать строку или подстроку, значением которой будет инициализироваться создаваемый объект класса StringBuilder. Вторая группа параметров позволяет задать емкость объекта - объем памяти, отводимой данному экземпляру класса StringBuilder. Каждая из этих групп не является обязательной и может быть опущена. Примером может служить конструктор без параметров, который создает объект, инициализированный пустой строкой, и с некоторой емкостью, заданной по умолчанию, значение которой зависит от реализации. Приведу в качестве примера синтаксис трех конструкторов:

  • public StringBuilder(string str, int cap); Параметр str задает строку инициализации, cap - емкость объекта;
  • public StringBuilder(int curcap, int maxcap); Параметры curcap и maxcap задают начальную и максимальную емкость объекта;
  • public StringBuilder(string str, int start, int len, int cap); Параметры str, start, len задают строку инициализации, cap - емкость объекта.

Над строками этого класса определены практически те же операции, что и над строками класса string:

  • присваивание (=);
  • две операции проверки эквивалентности (= =) и (!=);
  • взятие индекса ([]).

Операция конкатенации (+) не определена над строками класса StringBuilder, ее роль играет метод Append, дописывающий новую строку в хвост уже существующей. Семантика операций частично изменилась. Присваивание для строк этого класса является полноценным ссылочным присваиванием, так что изменение значения строки сказывается на всех экземплярах, ссылающихся на строку в динамической памяти. Эквивалентность теперь является проверкой ссылок, а не значений. Со строкой этого класса можно работать как с массивом, но, в отличие от класса string, здесь уже все делается как надо: допускается не только чтение отдельного символа, но и его изменение. Рассмотрим уже знакомый пример работы со строками, используя теперь строки класса StringBuilder:

/// <summary> /// Операции над строками StringBuilder /// </summary> public void TestStringBuilder() { string DEL = "->"; StringBuilder s1 = new StringBuilder("ABC"), s2 = new StringBuilder("CDE"); StringBuilder s3 = s2.Insert(0,s1.ToString()); s3.Remove(3, 3); bool b1 = (s1 == s3); char ch1 = s1[2]; string s = s1.ToString() + DEL + s2.ToString() + DEL + s3.ToString() + DEL + b1.ToString() + DEL + ch1.ToString(); Console.WriteLine(s); s2.Replace("ABC", "Zenon"); s1 = s2; s2[0] = 'L'; s1.Append(" - это музыкант!"); Console.WriteLine(s1.ToString() + " -> " + s2.ToString()); }

Результаты работы этого метода показаны на рис. 7.6


Рис. 7.6. Тип StringBuilder - это изменяемый тип

Этот пример демонстрирует возможность выполнения над строками класса StringBuilder тех же операций, что и над строками класса string. Обратите внимание, теперь методы, изменяющие строку, Replace, Insert, Remove, Append реализованы как процедуры, а не как функции. Они изменяют значение строки непосредственно в буфере, отводимом для хранения строки. Появляется новая возможность - изменять отдельные символы строки.



<== предыдущая лекция | следующая лекция ==>
Методы Join и Split | Основные методы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Полезен материал? Поделись:

Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.002 сек.