如何从字符串中删除表情符号?
- 作者: LeadingRole521
- 来源: 51数据库
- 2022-10-19
问题描述
我收到了来自移动设备的文本输入。它包含表情符号。在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字符,但我怀疑当您尝试存储它们时,它们也会遇到同样的问题。
推荐阅读
- C#通过fleck实现wss协议的WebSocket多人Web实时聊天(附源码)
- 团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
- 使用 MSBuild.exe 在发布模式下构建 C# 解决方案
- 当我发布 Web 应用程序时,AfterPublish 脚本不运行
- 构建时 T4 转换的产品仅在下一个构建中使用
- ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
- 新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
- 如何将条件编译符号(DefineConstants)传递给 msbuild
- MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
- NuGet 包还原找不到包,没有源
热点文章
团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
0
使用 MSBuild.exe 在发布模式下构建 C# 解决方案
0
当我发布 Web 应用程序时,AfterPublish 脚本不运行
0
构建时 T4 转换的产品仅在下一个构建中使用
0
ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
0
新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
0
如何将条件编译符号(DefineConstants)传递给 msbuild
0
MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
0
NuGet 包还原找不到包,没有源
0
使用 C# 6.0 功能运行 TFS 构建
0
