Поиск…


Синтаксис

  • \ '- одинарная кавычка (0x0027)
  • \ "- двойная кавычка (0x0022)
  • \\ - обратная косая черта (0x005C)
  • \ 0 - null (0x0000)
  • \ a - alert (0x0007)
  • \ b - backspace (0x0008)
  • \ f - подача формы (0x000C)
  • \ n - новая строка (0x000A)
  • \ r - возврат каретки (0x000D)
  • \ t - горизонтальная вкладка (0x0009)
  • \ v - вертикальная вкладка (0x000B)
  • \ u0000 - \ uFFFF - символ Юникода
  • \ x0 - \ xFFFF - символ Юникода (код с переменной длиной)
  • \ U00000000 - \ U0010FFFF - символ Юникода (для генерации суррогатов)

замечания

Последовательности 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"

Выделение специальных символов в символьных литералах

Апострофы

char apostrophe = '\'';

бэкслэш

char oneBackslash = '\\';

Выделение специальных символов в строковых литералах

бэкслэш

// 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.";

Обе переменные будут содержать один и тот же текст.

«Привет, мир!», - сказала быстрая коричневая лиса.

Newlines

Вербальные строковые литералы могут содержать символы новой строки:

string text = "Hello\r\nWorld!";
string verbatimText = @"Hello
World!";

Обе переменные будут содержать один и тот же текст.

Неопознанные escape-последовательности создают ошибки времени компиляции

Следующие примеры не будут компилироваться:

string s = "\c";
char c = '\c';

Вместо этого они будут генерировать ошибку Unrecognized escape sequence во время компиляции.

Использование escape-последовательностей в идентификаторах

Последовательности Escape не ограничиваются string и char символами.

Предположим, вам необходимо переопределить сторонний метод:

protected abstract IEnumerable<Texte> ObtenirŒuvres();

и предположим, что символ Œ недоступен в кодировке символов, используемой для исходных файлов C #. Вам повезло, разрешено использовать \U######## типа \u#### или \U######## в идентификаторах кода. Так что законно писать:

protected override IEnumerable<Texte> Obtenir\u0152uvres()
{
    // ...
}

и компилятор C # будет знать, что Œ и \u0152 являются \u0152 и тем же символом.

(Тем не менее, может быть хорошей идеей переключиться на UTF-8 или аналогичную кодировку, которая может обрабатывать все символы.)



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow