[英]How do I remove emoji characters from a string?
我從移動設備輸入了文本。 它包含表情符號。 在C#中,我的文字為
Text 🍫🌐 text
簡而言之,我希望輸出文本為
Text text
我正在嘗試使用rejex從文本中刪除所有此類表情符號。.除了,我不確定如何將該表情符號轉換為unicode序列。我該怎么做?
編輯:
我正在嘗試將用戶輸入保存到mysql中。 看起來mysql UTF8確實不支持Unicode字符, 正確的方法是更改架構,但我認為這不是我的選擇。 所以我試圖刪除所有的表情符號字符,然后再將其保存在數據庫中。
這是相關列的架構:
我使用Nhibernate作為我的ORM,生成的插入查詢如下所示:
Insert into `Content` (ContentTypeId, Comments, DateCreated)
values (?p0, ?p1, ?p2);
?p0 = 4 [Type: Int32 (0)]. ?p1 = 'Text 🍫🌐 text' [Type: String (20)], ?p2 = 19/01/2015 10:38:23 [Type: DateTime (0)]
當我從日志中復制此查詢並直接在mysql上運行時,出現以下錯誤:
1 warning(s): 1366 Incorrect string value: '\xF0\x9F\x98\x80 t...' for column 'Comments' at row 1 0.000 sec
另外,我嘗試將其轉換為編碼字節,但實際上並沒有用。
假設您只想刪除所有非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字符,但我懷疑您在嘗試存儲它們時會發現它們也會遇到相同的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.