Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да премахна емоджи знаци от низ?

Ако приемем, че просто искате да премахнете всички знаци, които не са BMP, т.е. всичко с кодова точка на Unicode от U+10000 и по-висока, можете да използвате регулярен израз, за ​​да премахнете всеки UTF-16 сурогат кодови единици от низа. Например:

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

Тук „Cs“ е категорията на Unicode за „сурогат“.

Изглежда, че Regex работи въз основа на кодови единици UTF-16, а не на кодови точки на Unicode, в противен случай ще ви е необходим различен подход.

Имайте предвид, че има знаци, различни от BMP, различни от емоджи, но подозирам, че ще откриете, че те ще имат същия проблем, когато се опитате да ги съхраните.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изпълнение на рекурсивни съхранени процедури в MYSQL за получаване на йерархични данни

  2. Неправилна стойност за дата и час. Номер на грешка в базата данни:1292

  3. Как мога да спра изпълняваща MySQL заявка?

  4. MySQL Създаване на таблици с външни ключове, даващи errno:150

  5. Какъв е този оператор <=> в MySQL?