【问题标题】:How remove non-ascii from string - c# [closed]如何从字符串中删除非ascii - c# [关闭]
【发布时间】:2017-04-21 12:21:51
【问题描述】:

我想从字符串中删除表情符号,但它不起作用

string str = "Hello world ????????☀⛿"; 
string result = Regex.Replace(str, @"\p{Cs}", "");

【问题讨论】:

  • 那个正则表达式应该做什么?它看起来对你的目的没有多大用处。
  • 我认为解决方案是一味取自stackoverflow.com/a/28025891/3832970
  • 哦,如果 Jon Skeet 建议这样做,那么它必须有效。我刚刚尝试了一个不支持它的在线正则表达式页面。
  • 字符串中的last one 是表情符号字符吗?这是一面旗帜。
  • @asa:我无法测试任何东西,因为您没有发布要求。什么是你的表情符号?您需要覆盖哪些 Unicode 范围?

标签: c# regex emoji


【解决方案1】:

我比较了我发现/想到的几个选项:

string text = "Hello world ??☀⛿END";

Console.WriteLine(text);
Console.WriteLine(Regex.Replace(text, @"\p{Cs}", ""));
Console.WriteLine(Regex.Replace(text, @"[^\u0000-\u007F]+", ""));
Console.WriteLine(text.Where(c => !Char.IsSurrogate(c)).ToArray());

结果如下:

Hello world ??????END
Hello world ??END
Hello world END
Hello world ??END

我不确定您的输入字符串在被复制、粘贴到此处、再次复制并粘贴到 Visual Studio 中后是否会在此过程中发生一些修改,但据我所知,显然第二种选项似乎效果更好。

您要删除所有特殊字符还是仅删除表情符号

【讨论】:

  • Regex.Replace(str, @"[^\u0000-\u007F]+", "");工作和感谢
  • 但是,它不仅匹配“表情符号”,还会删除西里尔字母等等。
  • 没错。我的猜测是 @asa 只需要删除 strange 字符并且不期望有什么特别的。对吗?
猜你喜欢
  • 2012-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-28
  • 2010-12-04
  • 1970-01-01
相关资源
最近更新 更多