2012-08-23 6 views
5

Mam aplikację, która czyta źródłowy html i pobiera wszystkie załączniki wiadomości e-mail. Działa to dobrze, z wyjątkiem faktu, że Microsoft Outlook ma jakąś dziwną wartość źródła, na przykład ...Zastąp ciąg znaków źródłowych html MS Outlook za pomocą wyrażenia regularnego?

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

Po pierwsze, chciałbym go tylko Załączniki zmienić \ image001.png jako źródło. Również alt powinien być po prostu image001.png, nie tak długo dziwny alt. Nie bardzo wiem, jak to osiągnąć.

+2

[Nie używaj wyrażenia regularnego do parsowania html] (http://stackoverflow.com/a/1732454/26226). – jrummell

+0

Myślę, że tytuł był w porządku, po prostu zwracam uwagę, że Regex zwykle nie jest wiarygodny w analizie html. – jrummell

+1

jeśli jesteś pewien, że 'tekst' będzie miał' ten sam wzór', 'ten sam format' i ** NIGDY ** nie zmieni się, ty ** POWATRZ ** używaj' REGEX', następnie ... To jest mało prawdopodobne w przypadku plików html ale myślę, że "REGEX" będzie tu dobrą opcją ... – Anirudha

Odpowiedz

2

należy użyć wyrażenia regularnego (I aktualizowane znaczniki w swoim pytaniu do odzwierciedlenia tego):

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

Jestem pewien, że są bardziej skuteczne sposoby, aby to zrobić, ale to, co mogłam wymyślić.

Powiązane problemy