Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak usunąć znaki emoji z ciągu?

Zakładając, że chcesz tylko usunąć wszystkie znaki inne niż BMP, tj. wszystko, co ma punkt kodowy Unicode U+10000 i wyższy, możesz użyć wyrażenia regularnego, aby usunąć dowolny zamiennik UTF-16 jednostki kodu z ciągu. Na przykład:

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

Tutaj „Cs” to kategoria Unicode dla „substytutu”.

Wygląda na to, że Regex działa w oparciu o jednostki kodu UTF-16, a nie punkty kodowe Unicode, w przeciwnym razie potrzebujesz innego podejścia.

Zwróć uwagę, że istnieją znaki spoza BMP inne niż emoji, ale podejrzewam, że napotkasz ten sam problem, gdy spróbujesz je zapisać.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. qt5.1.1 mysql ubuntu sterownik QMYSQL nie został załadowany

  2. jak działa indeksowanie B-drzewa w mysql

  3. Jak pominąć kolumny w pliku CSV podczas importu do tabeli MySQL za pomocą funkcji LOAD DATA INFILE?

  4. Zmiana wygenerowanej nazwy klucza obcego w Hibernate

  5. UNIKALNE Ograniczenie, tylko gdy pole zawiera określoną wartość