Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
26
Добавлен:
20.05.2015
Размер:
271.36 Кб
Скачать

Управляющие последовательности и специальные символы в строках

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

Список основных управляющих последовательностей приведен ниже.

\'

Одинарная кавычка

\"

Двойная кавычка

\\

Обратный слэш

\a

Системное оповещение

\b

Backspace

\f

Начало следующей страницы

\n

Начало новой строки

\r

Return

\t

Горизонтальный символ табуляции

Не все из этих символов допустимо использовать в строках Web-приложения. Тем не менее на рис. 3.8 отображен результат выполнения следующей команды:

string esc = "Имя программы \"Visual Studio 2005\",

местонахождение: C:\\Program Files\\Microsoft Visual

Studio 8\\";

Label1.Text = esc;

Рис. 3.7.Пример отображения строки с использованием управляющих символов

Кроме управляющих последовательностей в C# предусмотрен специальный префикс @, предназначенный для дословного вывода строки вне зависимости от наличия в ней управляющих символов. Можно сказать, что этот префикс отключает присутствующие в строке управляющие символы.

Использование класса System.Text.StringBuilder

При работе со строками в C# необходимо учитывать то, что строки являются неизменяемыми. Все действия, направленные на изменение строк, на самом деле не изменяют исходный ее вариант. Они лишь возвращают измененную копию строки. Это можно увидеть на следующем примере.

string s1 = "Пример строки";

string s2 = s1.ToUpper();

Response.Write(s1);

Response.Write("</br>");

Response.Write(s2);

В данном случае строка s1 не претерпела никаких изменений. Метод ToUpper() создал копию строки s1 и применил к ней необходимые преобразования, поэтому на экран будет выведена как исходная строка, так и строка, подвергшаяся изменению. Такое же утверждение справедливо и для обычной операции конкатенации строк. Результатом выполнения операции конкатенации строк является также новая строка.

В ряде случаев следует избегать ситуаций, когда в результате выполнения операции создается новая строка, т. к. это неизбежно связано с дополнительными накладными расходами памяти и других ресурсов компьютера при выполнении операции. C# содержит специальный класс StringBuilder, используя который можно избежать создания копий строк при их обработке. Все изменения, вносимые в объект данного класса, немедленно отображаются в нем, что в целом ряде случаев гораздо эффективнее, чем работа с множеством копий строки.

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

StringBuilder sb = new StringBuilder("Ехали медведи на

велосипеде");

sb.Append(", а за ними кот задом наперед");

Response.Write(sb);

Кроме добавления класс StringBuilder содержит множество других методов, наиболее значимые из которых перечисленных ниже. После того как все необходимые действия, связанные с обработкой строки, были выполнены, необходимо вызвать метод ToString() для перевода содержимого объекта в обычный тип данных string.

Append

Добавление заданной строки в конец строки объекта.

AppendFormat

Добавление заданной форматированной строки (строки, содержащей управляющие символы) в конец строки объекта.

CopyTo

Копирование символов заданного сегмента строки в заданные ячейки массива символов.

Insert

Добавление строки в заданную позицию строки объекта.

Remove

Удаление заданного количества символов из строки объекта

Replace

Замена заданного символа либо строки объекта на другой заданный символ либо строку.

При интенсивной работе со строками рекомендуется использовать класс StringBuilder, т. к. это позволяет уменьшить накладные расходы, связанные с созданием копии строки при выполнении каждой операции.

Соседние файлы в папке дополн_матерС#