Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie entferne ich Emoji-Zeichen aus einer Zeichenfolge?

Angenommen, Sie möchten nur alle Nicht-BMP-Zeichen entfernen, d. h. alles mit einem Unicode-Codepunkt von U+10000 und höher, können Sie einen regulären Ausdruck verwenden, um jedes UTF-16-Ersatzzeichen zu entfernen Codeeinheiten aus der Zeichenfolge. Zum Beispiel:

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

Hier ist „Cs“ die Unicode-Kategorie für „Ersatz“.

Es scheint, dass Regex funktioniert auf der Grundlage von UTF-16-Codeeinheiten und nicht von Unicode-Codepunkten, andernfalls benötigen Sie einen anderen Ansatz.

Beachten Sie, dass es neben Emojis auch andere Nicht-BMP-Zeichen gibt, aber ich vermute, Sie werden feststellen, dass sie das gleiche Problem haben werden, wenn Sie versuchen, sie zu speichern.