我在ac#VSTO项目中使用正则表达式解析电子邮件。有时,正则表达式似乎不起作用(尽管如果我将文本和正则表达式粘贴到regexbuddy中,则该正则表达式正确匹配该文本)。如果我查看gmail中的电子邮件,就会看到
=E2=80=8B
在某些行的开头和结尾(我知道这是UTF8零宽度空间);这似乎是搞砸正则表达式。这似乎只是顺序出现。
摆脱此确切序列的最简单方法是什么?我不能做明显的
MailItem.Body.Replace("=E2=80=8B", "")
因为这些字符不会显示在c#字符串中。
我也试过
byte[] bytes = Encoding.Default.GetBytes(MailItem.TextBody);
string myString = Encoding.UTF8.GetString(bytes);
但是零宽度空格只是显示为?。我想我可以遍历bytes数组并删除组成零宽度空间的字节,但是我不知道字节长什么样(看起来并不像将E2 80 8B转换为十进制然后搜索那样简单) 。
由于C#中的字符串以Unicode(不是UTF-8)存储,因此以下方法可以解决问题:
MailItem.Body.Replace("\u200B", "");
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句