我正在使用C# 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);
但是零宽空格只会显示为?。我想我可以遍历字节数组并删除组成零宽空格的字节,但我不知道这些字节会是什么样子(似乎不像将 E2 80 8B 转换为十进制并搜索那样简单)。