Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment supprimer les caractères emoji d'une chaîne ?

En supposant que vous souhaitiez simplement supprimer tous les caractères non BMP, c'est-à-dire tout ce qui a un point de code Unicode de U+10000 et supérieur, vous pouvez utiliser une expression régulière pour supprimer tout substitut UTF-16. unités de code de la chaîne. Par exemple :

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
    }
}

Ici "Cs" est la catégorie Unicode pour "substitut".

Il semble que Regex fonctionne sur la base des unités de code UTF-16 plutôt que des points de code Unicode, sinon vous auriez besoin d'une approche différente.

Notez qu'il existe des caractères non BMP autres que les emoji, mais je suppose que vous constaterez qu'ils auront le même problème lorsque vous essaierez de les stocker.