sql >> Database >  >> RDS >> Mysql

Hoe verwijder ik emoji-tekens uit een string?

Ervan uitgaande dat u alleen alle niet-BMP-tekens wilt verwijderen, d.w.z. alles met een Unicode-codepunt van U+10000 en hoger, kunt u een regex gebruiken om een ​​UTF-16 surrogaat te verwijderen code-eenheden uit de tekenreeks. Bijvoorbeeld:

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 is "Cs" de Unicode-categorie voor "surrogaat".

Het lijkt erop dat Regex werkt op basis van UTF-16-code-eenheden in plaats van Unicode-codepunten, anders zou u een andere aanpak nodig hebben.

Merk op dat er andere niet-BMP-tekens zijn dan emoji, maar ik vermoed dat je zult merken dat ze hetzelfde probleem zullen hebben wanneer je ze probeert op te slaan.




  1. Hoe de versiereeks (x.y.z) in MySQL te vergelijken?

  2. Hoe de maximale waarde van een numerieke kolom in SQL te vinden

  3. Vereist ODP.NET installatie van Oracle Client?

  4. kan stream niet openen:geen bestand of map in