清理Outlook生成的img src

时间:2012-12-04 21:11:27

标签: c# .net regex string

我有一个Outlook加载项,它将使MailItem将其附件和html内容保存到可以将其视为网页的位置。问题是,Outlook为每个附件添加了两组十六进制代码,这是一个例子。

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

从所有图像中删除01CD34FA.041E5EE0的最简洁方法是什么?

2 个答案:

答案 0 :(得分: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('@'));

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

答案 1 :(得分: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字符串中重复两次双引号,以获得单引号的效果。