Я пытался сравнить строку с "?", но она не была обнаружена.
Этот смайлик из полиции выше состоит из двух символов Unicode, лучше называемых Codepoints:офицер полиции U + 1F46E и модификатор персонажа U + 200D (комбинация из 4 точек выше).Если в выписке по делу у вас есть только сотрудник полиции U + 1F46E, то он не будет найден.
Вы должны быть уверены, что смайлики, которые вы вставили в код, идентичны смайликам, которые вы получили встрока ввода.Простое отображение строки сбивает с толку, потому что они кажутся равными, но это не так.
В исходном коде я поместил бы ? в качестве комментария, а в строке описания дела сотрудник полиции, использующий экранирование Codepoint "\ U0001F46E ".
case "\U0001F46E": // ?
case "\U0001F46E\u200D": // ? + ....
Или
const string PoliceOfficer = "\U0001F46E" // ?
...
case PoliceOfficer:
Обратите внимание на различное экранирование: верхний \ U для 8 шестнадцатеричных цифр и нижний \ u для 4 шестнадцатеричных цифр.Затем, когда вы не распознаете строку, просто распечатайте ее (в конце концов, в отладчике), получите правильное экранирование, которое строит вашу строку, и добавьте ее в операторы case.
В качестве альтернативы вы можете сначала удалитьиз входной строки все объединяющие метки, например "\ u200D", а затем передайте его в оператор case.А потом, в конце концов, придать дополнительный смысл комбинирующему персонажу.