我有一个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的最简洁方法是什么?
答案 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字符串中重复两次双引号,以获得单引号的效果。