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

Hvordan fjerner jeg emoji-tegn fra en streng?

Forudsat at du bare vil fjerne alle ikke-BMP-tegn, dvs. alt med et Unicode-kodepunkt på U+10000 og højere, kan du bruge et regex til at fjerne enhver UTF-16 surrogat kodeenheder fra strengen. For eksempel:

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

Her er "Cs" Unicode-kategorien for "surrogat".

Det ser ud til, at Regex fungerer baseret på UTF-16-kodeenheder i stedet for Unicode-kodepunkter, ellers har du brug for en anden tilgang.

Bemærk, at der er andre ikke-BMP-tegn end emoji, men jeg formoder, at du vil opdage, at de vil have det samme problem, når du prøver at gemme dem.




  1. Sådan returneres dagnummeret med et suffiks i MariaDB

  2. SQL Client til Mac OS X, der fungerer med MS SQL Server

  3. cx_Oracle:Hvordan kan jeg modtage hver række som en ordbog?

  4. Hvordan ændrer jeg min session til at vise UTF8 i Oracle?