2012-08-23 38 views
5

Tôi có một ứng dụng đọc mã nguồn html và tải xuống tất cả các tệp đính kèm của email. Này hoạt động tốt, ngoại trừ một thực tế là Microsoft Outlook có một số giá trị nguồn lạ, ví dụ ...Thay thế chuỗi nguồn MS Outlook html bằng regex?

<img width="163" height="39" id="Picture_x0020_1" src="cid:[email protected]" alt="Description: Description: Description: cid:[email protected]">

Đầu tiên, tôi muốn thay đổi nó để chỉ Attachments \ image001.png như là nguồn. Ngoài ra, alt chỉ nên được image001.png, không phải alt này dài lạ. Không thực sự chắc chắn làm thế nào để đi về điều này.

+2

[Không sử dụng regex để phân tích cú pháp html] (http://stackoverflow.com/a/1732454/26226). – jrummell

+0

Tôi nghĩ rằng tiêu đề là tốt, tôi chỉ chỉ ra rằng Regex thường rất không đáng tin cậy khi phân tích cú pháp html. – jrummell

+1

nếu bạn chắc chắn rằng 'văn bản' sẽ có' cùng một mẫu', 'cùng định dạng' và ** KHÔNG BAO GIỜ ** thay đổi, bạn ** NÊN ** sử dụng' REGEX' thì..Điều này không chắc với tệp html nhưng tôi nghĩ rằng 'REGEX' sẽ là một lựa chọn tốt ở đây ... – Anirudha

Trả lời

2

Bạn nên sử dụng Regex (tôi cập nhật các thẻ trong câu hỏi của bạn để phản ánh điều này):

Regex.Replace(text, @"src=""cid:(?<FileName>[^@]+)@[^""]*""", @"src=""Attachments\${FileName}""", 
    RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); 
Regex.Replace(x, @"alt=""[^.]*cid:(?<FileName>[^@]+)@[^""]*""", @"alt=""${FileName}""", 
    RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); 

tôi chắc chắn rằng có những cách hiệu quả hơn để làm điều này, nhưng đó là những gì tôi có thể đưa ra.

Các vấn đề liên quan