Как удалить символы emoji из строки?



У меня есть текстовый ввод с мобильного устройства. Он содержит смайлики. В C# у меня есть текст в виде



Text 
706   1  

1 ответ:

Предполагая, что вы просто хотите удалить все символы, не являющиеся BMP, то есть все, что имеет кодовую точку Unicode U+10000 и выше, вы можете использовать регулярное выражение для удаления любых UTF-16 суррогатных кодовых единиц из строки. Например:

using System;
using System.Text.RegularExpressions;

class Test
{
    static void Main(string[] args)
    {
        string text = "x\U0001F310y";
        Console.WriteLine(text.Length); // 4
        string result = Regex.Replace(text, @"\p{Cs}", "");
        Console.WriteLine(result); // 2
    }
}

Здесь " Cs "- это категория Юникода для"суррогата".

Похоже, что Regex работает на основе кодовых единиц UTF-16, а не кодовых точек Unicode, в противном случае вам потребуется другой подход.

Обратите внимание, что существуют не-BMP символы другие чем emoji, но я подозреваю, что вы обнаружите, что у них будет та же проблема, когда вы попытаетесь их сохранить.

Comments

    Ничего не найдено.