我正在尝试解析一个字符串并从中删除“表情符号”并保留新行。
所以,我有这段代码:
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' 的输出如下:
因此,正如您所看到的那样,新行工作正常并且它的末尾有“表情符号”,而下一行它完美地删除了它们。因此,结果字符串将包含带有新行且没有表情符号的相同字符串。
在程序的另一部分我有这段代码。
//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}", "");
如您在本例中所见,我的 text2 按原样输出字符串,而正则表达式完全不执行任何操作。新行不起作用,表情符号也不会被删除。
我很困惑为什么它在我的第一种情况下有效,而在第二种情况下却无效。我已经研究了好几个小时了,还是想不通。
最佳答案
我已经解决了。我的固定代码如下所示:
string text2 = uu.description;
string result2 = Regex.Replace(Regex.Unescape(text2), @"\p{Cs}", "");
出于某种原因,解析后的字符串带有一个额外的\
,看起来像这样\\n
。我要感谢@stribizhev 的想法!谢谢。
关于c# - 解析同一个字符串给出两个不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31966167/