Шрифт:
Базовые операции со строками
Для иллюстрации некоторых базовых операций со строками рассмотрим следующий метод Main.
Здесь мы создаем тип string, вызывающий методы Contains, Replace и Insert. Cоответствующий вывод показан на рис. 3.21.
Рис. 3.21. Базовые операции во строками
Вы должны учесть то, что хотя string и является ссылочным типом, операции равенства и неравенства (== и !=) предполагают сравнение значений со строковыми объектами, а не областей памяти, на которые они ссылаются. Поэтому следующее сравнение в результате дает true:
тогда как следующее сравнение возвратит false:
Для конкатенации существующих строк в новую строку, которая является объединением исходных, в C# предлагается операция +, как статический метод String.Concat. С учетом этого следующие операторы оказываются функционально эквивалентными.
Другой полезной возможностью, присущей типу string, является возможность выполнения цикла по всем отдельным символам строки с использованием синтаксиса, аналогичного синтаксису массивов. Формально говоря, объекты, поддерживающие доступ к своему содержимому, подобный по форме доступу к массивам, используют метод индексатора. О том, как строить индексаторы, вы узнаете из главы 9, но здесь для иллюстрации соответствующего понятия предлагается рассмотреть следующий фрагмент программного кода, в котором каждый символ строкового объекта s1 выводится на консоль.
В качестве альтернативы взаимодействию с индексатором типа можно использовать строковый класс в конструкции foreach. Ввиду того, что System.String поддерживает массив индивидуальных типов System.Char, следующий программный тоже выводит каждый символ si на консоль.
Управляющие последовательности
Как и в других языках, подобных C, строковые литералы в C# могут содержать различные управляющие последовательности, которые интерпретируются как определенный набор данных, предназначенных для отправки в выходной поток. Каждая управляющая последовательность начинается с обратной косой черты, за которой следует интерпретируемый знак. На тот случай, если вы подзабыли значения управляющих последовательностей, в табл. 3.13 предлагаются описания тех из них, которые используются чаще всего.
Таблица 3.13. Управляющие последовательности строковых литералов
Управляющая последовательность | Описание |
---|---|
\' | Вставляет в строковый литерал знак одиночной кавычки |
\" | Вставляет в строковый литерал знак двойной кавычки |
\\ | Вставляет в строковый литерал знак обратной косой черты, Это может оказаться полезным при указании пути |
\а | Инициирует системный звуковой сигнал (beep). Для консольных приложений это может быть аудиоподсказкой пользователю |
\n | Вставляет знак перехода на новую строку (на платформах Win32). |
\r | Вставляет знак возврата каретки |
\t | Вставляет в строковый литерал знак горизонтальной табуляции |
Так, чтобы напечатать строку, в которой между любыми двумя словами имеется знак табуляции, можно использовать управляющую последовательность \t.
Для другого примера предположим, что вам нужно создать строковый литерал, который содержит кавычки, литерал, указывающий путь к каталогу, и, наконец, литерал, который вставляет три пустые строки после вывода всех символьных данных. Чтобы не допустить появления сообщений об ошибках компиляции, используйте управляющие символы \", \\ и \n.