Другой полезной возможностью, присущей типу string, является возможность выполнения цикла по всем отдельным символам строки с использованием синтаксиса, аналогичного синтаксису массивов. Формально говоря, объекты, поддерживающие доступ к своему содержимому, подобный по форме доступу к массивам, используют
// System.String определяет индексатор для доступа
// каждому символу в строке.
for (int k = 0; k ‹ s1.Length; k++) Console.WriteLine("Char {0} is {1}", k, s1[k]);
В качестве альтернативы взаимодействию с индексатором типа можно использовать строковый класс в конструкции foreach. Ввиду того, что System.String поддерживает массив индивидуальных типов System.Char, следующий программный тоже выводит каждый символ si на консоль.
foreach (char c in s1) Console.WriteLine(с);
Управляющие последовательности
Как и в других языках, подобных C, строковые литералы в C# могут содержать различные управляющие последовательности, которые интерпретируются как определенный набор данных, предназначенных для отправки в выходной поток. Каждая управляющая последовательность начинается с обратной косой черты, за которой следует интерпретируемый знак. На тот случай, если вы подзабыли значения управляющих последовательностей, в табл. 3.13 предлагаются описания тех из них, которые используются чаще всего.
Таблица 3.13. Управляющие последовательности строковых литералов
Управляющая последовательность | Описание |
---|---|
\' | Вставляет в строковый литерал знак одиночной кавычки |
\" | Вставляет в строковый литерал знак двойной кавычки |
\\ | Вставляет в строковый литерал знак обратной косой черты, Это может оказаться полезным при указании пути |
\а | Инициирует системный звуковой сигнал (beep). Для консольных приложений это может быть аудиоподсказкой пользователю |
\n | Вставляет знак перехода на новую строку (на платформах Win32). |
\r | Вставляет знак возврата каретки |
\t | Вставляет в строковый литерал знак горизонтальной табуляции |
Так, чтобы напечатать строку, в которой между любыми двумя словами имеется знак табуляции, можно использовать управляющую последовательность \t.
// Строковые литералы могут содержать любое число
// управляющих последовательностей.
string s3 = "Эй, \tвы,\tтам,\tопять!";
Console.WriteLine(s3);
Для другого примера предположим, что вам нужно создать строковый литерал, который содержит кавычки, литерал, указывающий путь к каталогу, и, наконец, литерал, который вставляет три пустые строки после вывода всех символьных данных. Чтобы не допустить появления сообщений об ошибках компиляции, используйте управляющие символы \", \\ и \n.
Consolе.WriteLine("Все любят \"Hello World\");
Console. WriteLine("C:\\MyApp\\bin\\debug");
Console.WriteLine("Все завершено.\n\n\n");
Буквальное воспроизведение строк в C#
В C# вводится использование префикса @ для строк, которые требуется
// Следующая строка должна воспроизводиться буквально,
// поэтому все 'управляющее символы' будут отображены.
Console.WriteLine(@"C:\MyАрр\bin\debug");
Отметьте также и то, что буквально воспроизводимые строки могут использоваться для представления пропусков пространства в строковых значениях, "растянутых" на несколько строк.
// В буквально воспроизводимых строках