c# - 解析同一个字符串给出两个不同的值

标签 c# regex string

我正在尝试解析一个字符串并从中删除“表情符号”并保留新行。

所以,我有这段代码:

string text = "S H A V A . Est 2015\nBandung\nLine: @ubm5921j\nBbm: 7D2E6310\nFAST ORDER\ud83d\udc47\ud83c\udffe\ud83d\udc47\ud83c\udffe";
MessageBox.Show(text);
string result = Regex.Replace(text, @"\p{Cs}", "");

此处 'text' 的输出如下:

enter image description here

因此,正如您所看到的那样,新行工作正常并且它的末尾有“表情符号”,而下一行它完美地删除了它们。因此,结果字符串将包含带有新行且没有表情符号的相同字符串。

在程序的另一部分我有这段代码。

//uu.description is the same string as above 'text', 
//this is where I scrape directly from html
string text2 = uu.description; 
MessageBox.Show(text2);
string result2 = Regex.Replace(text2, @"\p{Cs}", "");

enter image description here

如您在本例中所见,我的 text2 按原样输出字符串,而正则表达式完全不执行任何操作。新行不起作用,表情符号也不会被删除。

我很困惑为什么它在我的第一种情况下有效,而在第二种情况下却无效。我已经研究了好几个小时了,还是想不通。

最佳答案

我已经解决了。我的固定代码如下所示:

string text2 = uu.description;
string result2 = Regex.Replace(Regex.Unescape(text2), @"\p{Cs}", "");

出于某种原因,解析后的字符串带有一个额外的\,看起来像这样\\n。我要感谢@stribizhev 的想法!谢谢。

关于c# - 解析同一个字符串给出两个不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31966167/

相关文章:

java - 如何以 : filepath (int, int) (int,int) 格式编写 java 模式?

regex - 执行大型正则表达式操作的最佳方法是什么?

c++ - 使用 == 比较字符串

c# - 为什么C#没有头文件? namespace 会处理所有事情吗?

c# - 从数据库中检索基于角色的内容片段的选项

c# - 使用 razorEngine 将 razor 语法转换为纯 html

c# - MVC3路由问题

regex - 使用 RegEx 搜索 VBA 源代码

mysql - 在存储过程中将 string 转换为 int

c# - 尝试将字符串的第一个符号转换为 int,得到奇怪的值