Поделиться через


\e последовательности строк и символов

Заметка

Эта статья является спецификацией компонентов. Спецификация служит проектным документом для функции. Она включает предлагаемые изменения спецификации, а также информацию, необходимую во время проектирования и разработки функции. Эти статьи публикуются до тех пор, пока предложенные изменения спецификации не будут завершены и включены в текущую спецификацию ECMA.

Может возникнуть некоторое несоответствие между спецификацией компонентов и завершенной реализацией. Эти различия фиксируются в соответствующих собраниях по проектированию языка (LDM).

Дополнительные сведения о процессе внедрения спецификаций функций в стандарт языка C# см. в статье о спецификациях .

Проблема чемпиона: https://github.com/dotnet/csharplang/issues/8657

Сводка

Добавление последовательности escape-обхода строк или символов \e в качестве сочетания клавиш или короткой замены для точки кода символа 0x1b, известной как символ ESCAPE (или ESC) .
Этот символ в настоящее время доступен с помощью одной из следующих escape-последовательностей:

  • \u001b
  • \U0000001b
  • \x1b (не рекомендуется, см. рисунок, прикрепленный внизу).)

При реализации этого предложения следующие утверждения должны быть истинными:

char escape_char = '\e';

Assert.IsTrue(escape_char == (char)0x1b, "...");
Assert.IsTrue(escape_char == '\u001b', "...");
Assert.IsTrue(escape_char == '\U0000001b', "...");
Assert.IsTrue(escape_char == '\x1b', "...");

Подробный дизайн

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

fragment Simple_Escape_Sequence
-    : '\\\'' | '\\"' | '\\\\' | '\\0' | '\\a' | '\\b' | '\\f' | '\\n' | '\\r' | '\\t' | '\\v'
+    : '\\\'' | '\\"' | '\\\\' | '\\0' | '\\a' | '\\b' | '\\f' | '\\n' | '\\r' | '\\t' | '\\v' | '\\e'
    ;

А также добавление последней строки в следующую таблицу спецификаций:

Простая escape-последовательность представляет символ Юникода, как описано в таблице ниже.

последовательности escape- имя символа кодовая точка Юникода
\' Одна кавычка U+0027
... ... ...
\e Escape-символ U+001B

Тип Character_Literalchar.