sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo elimino los caracteres emoji de una cadena?

Suponiendo que solo desea eliminar todos los caracteres que no sean BMP, es decir, cualquier cosa con un punto de código Unicode de U+10000 y superior, puede usar una expresión regular para eliminar cualquier sustituto UTF-16 unidades de código de la cadena. Por ejemplo:

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

Aquí "Cs" es la categoría Unicode para "sustituto".

Parece que Regex funciona en base a unidades de código UTF-16 en lugar de puntos de código Unicode; de ​​lo contrario, necesitaría un enfoque diferente.

Tenga en cuenta que hay caracteres que no son BMP además de emoji, pero sospecho que encontrará que tendrán el mismo problema cuando intente almacenarlos.