如何从字符串中删除表情符号? [英] How do I remove emoji characters from a string?

查看:0
本文介绍了如何从字符串中删除表情符号?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到了来自移动设备的文本输入。它包含表情符号。在C#中,我的文本为

Text 🍫🌐 text

简单地说,我希望输出文本是

Text text

我正在尝试用rejex从文本中删除所有这样的表情符号。除了,我不确定如何将这个表情符号转换成Unicode序列。 我该怎么做?

编辑:

我正在尝试将用户输入保存到MySQL中。看起来MySQL UTF8并不真正支持Unicode字符和right way to do it would be by changing the schema,但我不认为这是我的选择。因此,在将其保存到数据库之前,我正尝试删除所有表情符号。

这是我对相关列的架构:

我使用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: 'xF0x9Fx98x80 t...' for column 'Comments' at row 1   0.000 sec

此外,我尝试将其转换为编码字节,但实际上并不起作用。

unicode

假设您只想删除所有非推荐答案字符,即unicode码位为U+10000及更高的任何字符,则可以使用正则表达式从字符串中删除任何UTF16代理代码单元。例如:

using System;
using System.Text.RegularExpressions;

class Test
{
    static void Main(string[] args)
    {
        string text = "xU0001F310y";
        Console.WriteLine(text.Length); // 4
        string result = Regex.Replace(text, @"p{Cs}", "");
        Console.WriteLine(result); // 2
    }
}

此处"Cs"是"代理"的Unicode类别。

似乎Regex基于UTF-16代码单元而不是Unicode代码点工作,否则您需要不同的方法。

请注意,除了emoji,还有其他非BMP字符,但我怀疑当您尝试存储它们时,它们也会遇到同样的问题。

这篇关于如何从字符串中删除表情符号?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆