Ошибка UTF-16, как решить нераспознанную escape-последовательность? - PullRequest
0 голосов
/ 03 марта 2020

Эта программа представляет собой программу-переводчик, которая принимает некоторые символы и преобразует их в обычные буквы. Проблема в том, что когда я пытаюсь поместить некоторые символы, такие как: allAlphabets.Add ("[] / []"); или: allAlphabets.Add ("//"); , я получаю сообщение об ошибке UTF-16

        static void Main(string[] args)
        {
        string input = ""; // string input
        List<string> allAlphabets = new List<string>(); // storing to a list
        input = Console.ReadLine();
        char[] word = input.ToCharArray();
        for (int i = 0; i < word.Length; i++)
        {
            switch (word[i]) // switch casce
            {
           normal letters
                case 'm':
                    allAlphabets.Add("[]\/[]"); // represents text as a sequence of utf-16 code units 
                    break;
                case 'n':
                    allAlphabets.Add("[]\[]"); // represents text as a sequence of utf-16 code units
                case 'v':
                    allAlphabets.Add("\/"); // represents text as a sequence of utf-16 code units
                    break;
                case 'w':
                    allAlphabets.Add("\/\/"); // represents text as a sequence of utf-16 code units

             }
          }
       }
    }

Кто-нибудь знает способ кодирования нераспознанной escape-последовательности? Спасибо!

1 Ответ

4 голосов
/ 03 марта 2020

Вам необходимо использовать дословный идентификатор (@)

Чтобы указать, что строковый литерал должен интерпретироваться дословно. Символ @ в этом случае определяет дословный строковый литерал. Простые escape-последовательности (такие как "\\" для обратного знака sh), шестнадцатеричные escape-последовательности (такие как "\x0041" для прописных букв A) и escape-последовательности Unicode (например, "\u0041" для прописных букв A) интерпретируются буквально , Только escape-последовательность кавычки ("") не интерпретируется буквально; он производит одну кавычку. Кроме того, в случае дословно интерполированных цепочек escape-последовательностей ({{ и }}) не интерпретируются буквально; они производят одиночные фигурные скобки.

allAlphabets.Add(@"[]\/[]");

или экранирование обратного хода sh

allAlphabets.Add("[]\\/[]")

Дополнительные ресурсы

...