Mysql
 sql >> Database >  >> RDS >> Mysql

Come rimuovo i caratteri emoji da una stringa?

Supponendo che tu voglia solo rimuovere tutti i caratteri non BMP, ovvero qualsiasi cosa con un punto di codice Unicode di U+10000 e superiore, puoi usare una regex per rimuovere qualsiasi UTF-16 surrogato unità di codice dalla stringa. Ad esempio:

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

Qui "Cs" è la categoria Unicode per "surrogato".

Sembra che Regex funziona in base alle unità di codice UTF-16 anziché ai punti di codice Unicode, altrimenti avresti bisogno di un approccio diverso.

Nota che ci sono caratteri non BMP diversi dalle emoji, ma sospetto che scoprirai che avranno lo stesso problema quando proverai a memorizzarli.