Jim*_*mmy 6 c# regex utf-8 character-encoding
我在ac#VSTO项目中使用正则表达式解析电子邮件.偶尔,正则表达式似乎不起作用(尽管如果我在regexbuddy中粘贴文本和正则表达式,正则表达式正确匹配文本).如果我看一下gmail中的电子邮件,我明白了
=E2=80=8B
Run Code Online (Sandbox Code Playgroud)
在一些行的开头和结尾(我理解的是UTF8零宽度空间); 这似乎搞乱了正则表达式.这似乎只是序列出现了.
摆脱这个确切序列的最简单方法是什么?我做不了明显的事
MailItem.Body.Replace("=E2=80=8B", "")
Run Code Online (Sandbox Code Playgroud)
因为这些字符没有显示在c#字符串中.
我也试过了
byte[] bytes = Encoding.Default.GetBytes(MailItem.TextBody);
string myString = Encoding.UTF8.GetString(bytes);
Run Code Online (Sandbox Code Playgroud)
但零宽度空间只是显示为?我想我可以通过字节数组并删除包含零宽度空间的字节,但我不知道字节会是什么样子(它似乎不像将E2 80 8B转换为十进制并搜索那样简单) .
Rob*_* S. 11
由于C#中的字符串存储在Unicode(不是UTF-8)中,因此以下方法可能会起作用:
MailItem.Body.Replace("\u200B", "");
Run Code Online (Sandbox Code Playgroud)