- C# Language Строковые escape-последовательности
- Управляющие последовательности символов Unicode
- Выделение специальных символов в символьных литералах
- Выделение специальных символов в строковых литералах
- Неопознанные escape-последовательности создают ошибки времени компиляции
- Использование escape-последовательностей в идентификаторах
- Escape-знаки в регулярных выражениях
- Escape-знаки в NET
- Пример
- См. также
C# Language
Строковые escape-последовательности
Последовательности escape-последовательности строк преобразуются в соответствующий символ во время компиляции . Обычные строки, которые содержат обратную косую черту, не преобразуются.
Например, строки notEscaped и notEscaped2 ниже не преобразуются в символ новой строки, а остаются как два разных символа ( ‘\’ и ‘n’ ).
string escaped = "\n"; string notEscaped = "\\" + "n"; string notEscaped2 = "\\n"; Console.WriteLine(escaped.Length); // 1 Console.WriteLine(notEscaped.Length); // 2 Console.WriteLine(notEscaped2.Length); // 2
Управляющие последовательности символов Unicode
string sqrt = "\u221A"; // √ string emoji = "\U0001F601"; // 😁 string text = "\u0022Hello World\u0022"; // "Hello World" string variableWidth = "\x22Hello World\x22"; // "Hello World"
Выделение специальных символов в символьных литералах
Выделение специальных символов в строковых литералах
// The filename will be c:\myfile.txt in both cases string filename = "c:\\myfile.txt"; string filename = @"c:\myfile.txt";
Во втором примере используется строковый литерал , который не обрабатывает обратную косую черту как escape-символ.
string text = "\"Hello World!\", said the quick brown fox."; string verbatimText = @"""Hello World!"", said the quick brown fox.";
Обе переменные будут содержать один и тот же текст.
«Привет, мир!», — сказала быстрая коричневая лиса.
Вербальные строковые литералы могут содержать символы новой строки:
string text = "Hello\r\nWorld!"; string verbatimText = @"Hello World!";
Обе переменные будут содержать один и тот же текст.
Неопознанные escape-последовательности создают ошибки времени компиляции
Следующие примеры не будут компилироваться:
Вместо этого они будут генерировать ошибку Unrecognized escape sequence во время компиляции.
Использование escape-последовательностей в идентификаторах
Последовательности Escape не ограничиваются string и char символами.
Предположим, вам необходимо переопределить сторонний метод:
protected abstract IEnumerable ObtenirŒuvres();
и предположим, что символ Œ недоступен в кодировке символов, используемой для исходных файлов C #. Вам повезло, разрешено использовать \U######## типа \u#### или \U######## в идентификаторах кода. Так что законно писать:
protected override IEnumerable Obtenir\u0152uvres() < // . >
и компилятор C # будет знать, что Œ и \u0152 являются \u0152 и тем же символом.
(Тем не менее, может быть хорошей идеей переключиться на UTF-8 или аналогичную кодировку, которая может обрабатывать все символы.)
- Начало работы с C # Language
- BackgroundWorker
- BigInteger
- BindingList
- CLSCompliantAttribute
- Enum
- FileSystemWatcher
- Generic Lambda Query Builder
- Guid
- ICloneable
- IComparable
- IEnumerable
- ILGenerator
- Interoperability
- Linq to Objects
- LINQ to XML
- Microsoft.Exchange.WebServices
- NullReferenceException
- O (n) Алгоритм кругового вращения массива
- ObservableCollection
- String.Format
- StringBuilder
- System.DirectoryServices.Protocols.LdapConnection
- System.Management.Automation
- Verbatim Strings
- Windows Communication Foundation
- XDocument и пространство имен System.Xml.Linq
- XmlDocument и пространство имен System.Xml
- Анализ регулярных выражений
- Аннотации данных
- Анонимные типы
- Асинхронные / ожидающие, фоновые работы, задачи и примеры потоков
- Асинхронный разъем
- Асинхронный-Await
- Атрибуты
- Включая ресурсы шрифтов
- Внедрение зависимости
- Внедрение шаблона дизайна мухи
- Внедрение шаблона проектирования декоратора
- Возможности C # 3.0
- Возможности C # 4.0
- Возможности C # 5.0
- Возможности C # 6.0
- Возможности C # 7.0
- Встроенные типы
- Выполнение HTTP-запросов
- Генерация кода Т4
- Генерация случайных чисел в C #
- Двоичная сериализация
- Делегаты
- Делегаты Func
- Деревья выражений
- Дженерики
- диагностика
- Динамический тип
- Доступ к базам данных
- Доступ к общей общей папке с именем пользователя и паролем
- Заблокировать
- Запросы LINQ
- Идентификация ASP.NET
- Именованные аргументы
- Именованные и необязательные аргументы
- Импорт контактов Google
- имя оператора
- Индексатор
- Инициализаторы коллекции
- Инициализаторы объектов
- Инициализация свойств
- Интерполяция строк
- Интерфейс IDisposable
- Интерфейс INotifyPropertyChanged
- Интерфейс IQueryable
- Интерфейсы
- Использование json.net
- Использование SQLite в C #
- Использование директивы
- Использование заявления
- итераторы
- Как использовать C # Structs для создания типа Union (аналогично C Unions)
- Кастинг
- Ключевое слово доходности
- Ключевые слова
- Кодовые контракты
- Кодовые контракты и утверждения
- Комментарии и регионы
- Комментарии к документации XML
- Компиляция времени выполнения
- Конкатенация строк
- Конструкторы и финализаторы
- Конструкции потока данных параллельной библиотеки задач (TPL)
- Контекст синхронизации в Async-Await
- Кортеж
- Криптография (System.Security.Cryptography)
- Кэширование
- литералы
- Лямбда-выражения
- Лямбда-выражения
- Манипуляция строк
- Массивы
- методы
- Методы DateTime
- Методы расширения
- Многопоточность
- Модификаторы доступа
- наследование
- Начало работы: Json с C #
- Небезопасный код в .NET.
- Неверные типы
- неизменность
- Нуль-условные операторы
- Обеспечение безопасности переменной потока
- Обзор коллекций c #
- Обработка FormatException при преобразовании строки в другие типы
- Обработка исключений
- Обработчик проверки подлинности C #
- Общие операции с строками
- Объектно-ориентированное программирование на C #
- Оператор Null-Coalescing
- Оператор равенства
- операторы
- отражение
- Параллельная библиотека задач
- Параллельный LINQ (PLINQ)
- перекручивание
- перелив
- Платформа компилятора .NET (Roslyn)
- Полиморфизм
- Поток
- Преобразование типа
- Препроцессорные директивы
- Примеры AssemblyInfo.cs
- Проверено и не отмечено
- Псевдонимы встроенных типов
- Равные и GetHashCode
- Разрешение перегрузки
- Реактивные расширения (Rx)
- Реализация Singleton
- Рекурсия
- Сборщик мусора в .Net
- свойства
- Секундомеры
- сетей
- События
- Соглашения об именах
- Создание консольного приложения с использованием редактора Plain-Text и компилятора C # (csc.exe)
- Создание собственного MessageBox в приложении Windows Form
- Создание шаблонов проектирования
- Статические классы
- Строковые escape-последовательности
- Структурные шаблоны проектирования
- Структуры
- Сценарий C #
- Таймеры
- Тип значения vs Тип ссылки
- указатели
- Указатели и небезопасный код
- Условные заявления
- Файловый и потоковый ввод-вывод
- Фильтры действий
- Функциональное программирование
- Функция с несколькими возвращаемыми значениями
- Хэш-функции
- Частичный класс и методы
- Читать и понимать Stacktraces
- Чтение и запись .zip-файлов
Escape-знаки в регулярных выражениях
Обратная косая черта (\) в регулярном выражении имеет одно из указанных ниже значений.
Escape-символы распознаются в шаблонах регулярных выражений, но не в шаблонах замены.
Escape-знаки в NET
В таблице ниже перечислены escape-последовательности, поддерживаемые регулярными выражениями в .NET.
Пример
В приведенном ниже примере показано использование escape-последовательностей в регулярном выражении. В нем анализируется строка, содержащая названия крупнейших городов мира и их население в 2009 г. Название каждого города отделяется от его населения табуляции ( \t ) или вертикальной полосой (| или \u007c ). Отдельные города и их население разделяются символами возврата каретки и перевода строки.
using System; using System.Text.RegularExpressions; public class Example < public static void Main() < string delimited = @"\G(.+)[\t\u007c](.+)\r?\n"; string input = "Mumbai, India|13,922,125\t\n" + "Shanghai, China\t13,831,900\n" + "Karachi, Pakistan|12,991,000\n" + "Delhi, India\t12,259,230\n" + "Istanbul, Türkiye|11,372,613\n"; Console.WriteLine("Population of the World's Largest Cities, 2009"); Console.WriteLine(); Console.WriteLine("", "City", "Population"); Console.WriteLine(); foreach (Match match in Regex.Matches(input, delimited)) Console.WriteLine(" ", match.Groups[1].Value, match.Groups[2].Value); > > // The example displays the following output: // Population of the World's Largest Cities, 2009 // // City Population // // Mumbai, India 13,922,125 // Shanghai, China 13,831,900 // Karachi, Pakistan 12,991,000 // Delhi, India 12,259,230 // Istanbul, Türkiye 11,372,613
Imports System.Text.RegularExpressions Module Example Public Sub Main() Dim delimited As String = "\G(.+)[\t\u007c](.+)\r?\n" Dim input As String = "Mumbai, India|13,922,125" + vbCrLf + _ "Shanghai, China" + vbTab + "13,831,900" + vbCrLf + _ "Karachi, Pakistan|12,991,000" + vbCrLf + _ "Delhi, India" + vbTab + "12,259,230" + vbCrLf + _ "Istanbul, Türkiye|11,372,613" + vbCrLf Console.WriteLine("Population of the World's Largest Cities, 2009") Console.WriteLine() Console.WriteLine(" ", "City", "Population") Console.WriteLine() For Each match As Match In Regex.Matches(input, delimited) Console.WriteLine(" ", match.Groups(1).Value, _ match.Groups(2).Value) Next End Sub End Module ' The example displays the following output: ' Population of the World's Largest Cities, 2009 ' ' City Population ' ' Mumbai, India 13,922,125 ' Shanghai, China 13,831,900 ' Karachi, Pakistan 12,991,000 ' Delhi, India 12,259,230 ' Istanbul, Türkiye 11,372,613
Возможные интерпретации регулярного выражения \G(.+)[\t\u007c](.+)\r?\n показаны в следующей таблице.
Шаблон | Описание |
---|---|
\G | Начать сопоставление там, где закончилось последнее соответствие. |
(.+) | Сопоставление любого символа один или более раз. Это первая группа записи. |
[\t\u007c] | Совпадение с табуляции ( \t ) или вертикальной полосой (|). |
(.+) | Сопоставление любого символа один или более раз. Это вторая группа записи. |
\r?\n | Соответствует отсутствию или одному вхождению символа возврата каретки, за которым следует новая строка. |