0

我有一个 Outlook 加载项,它会将 MailItem 的附件和 html 内容保存到可以作为网页查看的位置。问题是,Outlook 将 2 组十六进制代码附加到每个附件,这是一个示例。

<img width=700 height=119 id="_x0000_i1032" src="http://somesite/img/didyouknow/image001.jpg@01CD34FA.041E5EE0" alt="diduknow_header.gif">

从上面删除所有图像的 01CD34FA.041E5EE0 最干净的方法是什么?

4

2 回答 2

0

简单:由于您从 Outlook 获取完整的 XML 文档,因此首先将其加载到 XmlDocument

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(html);
string imgsrc = xmlDoc["img"].Attributes["src"].InnerText; //I'm just guessing here without the full XML

imgsrc = imgsrc.Substring(0, imgsrc.LastIndexOf('@'));

可能想要进行错误检查,因为如果字符串中没有 @ 符号,这将引发异常。

于 2012-12-04T21:16:09.813 回答
0

尝试搜索此模式:

(src\=\".*?\.jpg)([^\"]+)(\")

并替换为

$1$3

在代码中它是:

string input = File.ReadAllText("path/to/the/outlook.mess");
string pattern = @"(src\=\"".*?\.jpg)([^\""]+)(\"")";
string cleanOutput = Regex.Replace(input, pattern, "$1$3");
File.WriteAllText("/path/to/the/outlook.clean", cleanOutput);

请注意,需要在 at-quoted 字符串中重复两次双引号,以产生单引号的效果。

于 2012-12-04T22:10:44.300 回答