2012-08-23 50 views
-1

我使用Response.Write將所有HTML表代碼寫入Excel文件,並在ASP.NET中使用HTMLTable進行導出。從ASP.NET導入到Excel之前操作HTML

我現在需要做的是從這個Excel文件中刪除所有的超鏈接。有沒有比使用正則表達式更好的方法?

如果一個正則表達式是最好的方式,我該如何消除標籤而不是兩者之間的ID?

<td class="header">Details ID</td> 
     <td> 
     <div class="id"><a class="details" href="details?id=1232" target="_blank">1232</a></div> 
     </td> 
     <td> 
     <div class="id"><a class="details" href="details?id=1233" target="_blank">1233</a></div> 
     </td> 
     <td> 
     <div class="id"><a class="details" href="details?id=1234" target="_blank">1234</a></div> 
     </td> 
    </tr> 
+1

不要用HTML使用正則表達式:http://stackoverflow.com/questions/1732348/regex-match -open-tags-except-xhtml-self-contained-tags –

回答

0

這個簡單的正則表達式將做到這一點:

</?(a|A).*?> 

這裏有一個鏈接,以輸入來測試它:

http://regexhero.net/tester/?id=c1458e14-de87-4f57-9850-3ee00e573566

enter image description here

如果你不喜歡解析與正則表達式HTML作爲約翰·桑德斯,你可以使用HtmlAgilityPack

class Program 
{ 
    static void Main(string[] args) 
    { 
     RemoveHyperlinksButKeepText(); 
    } 

    private static void RemoveHyperlinksButKeepText() 
    { 
     var htmlDoc = new HtmlDocument(); 
     htmlDoc.Load(@"C:\YourHtmlFile.html"); 

     var links = htmlDoc.DocumentNode.SelectNodes("//a"); 

     string html = htmlDoc.DocumentNode.OuterHtml; 

     foreach (HtmlNode link in links) 
     { 
      var linkText = link.InnerText; 

      html = html.Replace(link.OuterHtml, linkText); 
     } 

    } 
} 
+0

-1:參見http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags –

+0

@ JohnSaunders:你對HtmlAgilityPack有什麼看法?在這種情況下,這是一個不錯的選擇... –

+0

我從來沒有用過它,但很多人都說過很多好東西。很多人說使用正則表達式有很多不好的地方。 –