2012-08-23 15 views
5

Kaynak html'yi okuyan ve bir e-postanın tüm eklerini indiren bir uygulamam var. Bu benim kaynak olarak \ image001.png bunu yalnızca Ekler değiştirmek istiyorum ... Öncelikle, Microsoft Outlook örneğin bazı garip kaynak değere sahip olması dışındaMS Outlook html kaynak dizesini regex ile değiştirin.

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

çalışıyor. Ayrıca, alt sadece, bu uzun tuhaf alt değil, image001.png olmalıdır. Bundan nasıl emin olacağından emin değilim.

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); 

Bunu yapmanın daha verimli yollar vardır eminim, ama ben ile gelebilir ne:

+2

[Html'yi ayrıştırmak için regex kullanmayın] (http://stackoverflow.com/a/1732454/26226). – jrummell

+0

Sanırım başlık iyiydi, sadece Regex'in html'yi ayrıştırmakta genellikle güvenilmez olduğunu belirtiyorum. – jrummell

+1

Eğer "metnin" aynı modele, "aynı biçime" sahip olacağına ve ** ASLA ** değişeceğine, ancak ** "REGEX" komutunu kullanmanız gerektiğine eminseniz ... Bu html dosyaları ile olası değildir. ama bence REGEX burada iyi bir seçenek olurdu ... – Anirudha

cevap

2

Sen Regex kullanmalıdır (bu yansıtacak şekilde söz konusu etiketleri güncellendi).