Обнаружение *все* смайловC#

Место общения программистов C#
Ответить
Anonymous
 Обнаружение *все* смайлов

Сообщение Anonymous »

Сейчас я использую этот фрагмент кода:

Код: Выделить всё

public static bool ContainsEmoji(this string text)
{
Regex rgx = new Regex(@"\p{Cs}");
return rgx.IsMatch(text);
}
И это в некоторой степени полезно.

Большинство из них обнаруживаются, но некоторые нет.

Вот список ссылок: http://unicode.org/emoji/charts/full-emoji-list.html
Все смайлы вроде бы хороши, но эти специфические смайлы не попадают в регулярное выражение:

1920 U+2614 ☔ зонт с каплями дождя

1921 U +26F1 ⛱ зонтик на земле

1922 U+26A1 ⚡ высокое напряжение

1923 U+2744 ❄ снежинка

На клавиатуре они не рядом друг с другом, но в списке идут друг за другом, поэтому я просто предположил, что в этом есть смысл где он начнет не работать в списке смайлов и на самом деле не проверяется. Начиная с 1905 года (смайлики, похожие на погоду), некоторые из них попадают в регулярное выражение, некоторые нет. Кажется, здесь нет никаких правил.

Я не могу позволить себе просто использовать полный ASCII, потому что мне нужно, чтобы люди вводили такие символы, как кириллица, но я не могу принимайте смайлики специально. Я понятия не имею, что делать дальше.

Я читал документацию MSDN о суррогатных парах «старший/младший», но на данном этапе это меня очень сбивает с толку, и Я думаю, что некоторый толчок в правильном направлении будет иметь большое значение.

Большое спасибо за ваше время :)

Подробнее здесь: https://stackoverflow.com/questions/469 ... all-emojis
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»