欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#使用for循環(huán)移除HTML標記

 更新時間:2016年08月19日 09:18:55   作者:Jaxu  
大家在項目開發(fā)階段移除文字中的html標記最常用的方法就是使用正則表達式,但是正則表達式不能處理所有的html文檔,所以采用迭代方式會更好,下面小編給大家解答下

移除一段文字中的HTML標記,以消除其中包含的樣式和段落等,最常用的辦法可能就是正則表達式了。但是請注意,正則表達式并不能處理所有的HTML文檔,所以有時采用一個迭代的方式會更好,如for循環(huán)。

看下面的代碼:

using System;
using System.Text.RegularExpressions;
/// <summary>
/// Methods to remove HTML from strings.
/// </summary>
public static class HtmlRemoval
{
/// <summary>
/// Remove HTML from string with Regex.
/// </summary>
public static string StripTagsRegex(string source)
{
return Regex.Replace(source, "<.*?>", string.Empty);
}
/// <summary>
/// Compiled regular expression for performance.
/// </summary>
static Regex _htmlRegex = new Regex("<.*?>", RegexOptions.Compiled);
/// <summary>
/// Remove HTML from string with compiled Regex.
/// </summary>
public static string StripTagsRegexCompiled(string source)
{
return _htmlRegex.Replace(source, string.Empty);
}
/// <summary>
/// Remove HTML tags from string using char array.
/// </summary>
public static string StripTagsCharArray(string source)
{
char[] array = new char[source.Length];
int arrayIndex = 0;
bool inside = false;
for (int i = 0; i < source.Length; i++)
{
char let = source[i];
if (let == '<')
{
inside = true;
continue;
}
if (let == '>')
{
inside = false;
continue;
}
if (!inside)
{
array[arrayIndex] = let;
arrayIndex++;
}
}
return new string(array, 0, arrayIndex);
}
}

代碼中提供了兩種不同的方式來移除給定字符串中的HTML標記,一個是使用正則表達式,一個是使用字符數(shù)組在for循環(huán)中進行處理。來看一下測試的結果:

using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
const string html = "<p>There was a <b>.NET</b> programmer " +
"and he stripped the <i>HTML</i> tags.</p>";
Console.WriteLine(HtmlRemoval.StripTagsRegex(html));
Console.WriteLine(HtmlRemoval.StripTagsRegexCompiled(html));
Console.WriteLine(HtmlRemoval.StripTagsCharArray(html));
}
}

  輸出結果如下:

There was a .NET programmer and he stripped the HTML tags.
There was a .NET programmer and he stripped the HTML tags.
There was a .NET programmer and he stripped the HTML tags.

  上述代碼中分別調用了HtmlRemoval類中的三個不同的方法,均返回了相同的結果,即去除了給定字符串中的HTML標記。推薦使用第二種方法,即直接引用一個預先定義好的RegexOptions.Compiled的正則表達式對象,它比第一種方法速度更快。但是RegexOptions.Compiled有一些缺點,在某些情況下它的啟動時間會增加數(shù)十倍。具體的內容可以查看下面這兩篇文章:

RegexOption.Compiled
Regex Performance

  通常,正則表達式的執(zhí)行效率并不是最高的,所以HtmlRemoval類中給定了另一種方法,使用字符數(shù)組來處理字符串。測試程序提供了1000個HTML文件,每個HTML文件中有大約8000個字符,所有的文件均通過File.ReadAllText方式進行讀取,測試結果顯示字符數(shù)組的方式執(zhí)行速度是最快的。

Performance test for HTML removal

HtmlRemoval.StripTagsRegex: 2404 ms
HtmlRemoval.StripTagsRegexCompiled: 1366 ms
HtmlRemoval.StripTagsCharArray: 287 ms [最快]

File length test for HTML removal

File length before: 8085 chars
HtmlRemoval.StripTagsRegex: 4382 chars
HtmlRemoval.StripTagsRegexCompiled: 4382 chars
HtmlRemoval.StripTagsCharArray: 4382 chars

  所以,使用字符數(shù)組來處理大批量的文件時可以節(jié)省時間。在字符數(shù)組方法中,僅僅只是將非HTML標記的字符添加到數(shù)組緩沖區(qū),為了提高效率,它使用字符數(shù)組和一個新的字符串構造器來接收字符數(shù)組和范圍,這個會比使用StringBuilder速度更快。

對于自關閉的HTML標記

  在XHTML中,某些標記并不具有獨立的關閉標簽,如<br/>,<img/>等。上述代碼應該能夠正確處理自關閉的HTML標記。下面是一些支持的HTML標記,注意,正則表達式方法可能無法正確處理無效的HTML標記。

Supported tags

<img src="" />
<img src=""/>
<br />
<br/>
< div >
<!-- -->

HTML文檔中的注釋

  本文給出的代碼對移除HTML文檔注釋中的HTML標記可能會失效。有些時候,注釋中可能會包含一些無效的HTML標記,在處理時這些HTML標記不會被完全移除。但是,掃描這些不正確的HTML標記有時可能是必要的。

如何驗證

  有許多種方法可以用來驗證XHTML,我們可以采用和上面代碼相同的方式來進行迭代。一個簡單的方法是對'<'和'>'進行計數(shù),從而確定它們是否匹配,或者采用正則表達式進行匹配。這里有一些資源介紹了這些方法:

HTML Brackets: Validation

Validate XHTML

  有許多方法都可以用來去除給定字符串中的HTML標記,它們返回的結果也都是正確的。毫無疑問,采用字符數(shù)組進行迭代的效率最高。

以上所述是小編給大家介紹的C#使用for循環(huán)移除HTML標記 ,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關文章

  • C#實現(xiàn)繪制浮雕圖片效果實例

    C#實現(xiàn)繪制浮雕圖片效果實例

    這篇文章主要介紹了C#實現(xiàn)繪制浮雕圖片效果實例,是C#程序設計中非常實用的一個功能,需要的朋友可以參考下
    2014-08-08
  • Unity3d實現(xiàn)跑馬燈廣播效果

    Unity3d實現(xiàn)跑馬燈廣播效果

    這篇文章主要為大家詳細介紹了Unity3d實現(xiàn)跑馬燈廣播效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C# Winform實現(xiàn)截圖工具的示例代碼

    C# Winform實現(xiàn)截圖工具的示例代碼

    這篇文章主要為大家詳細介紹了如何使用C# Winform制作一個簡單的截圖工具,從而實現(xiàn)截圖功能,文中的示例代碼講解詳細,有需要的可以參考下
    2024-02-02
  • 解析OpenXml?Pptx的邊框虛線轉為WPF的邊框虛線問題

    解析OpenXml?Pptx的邊框虛線轉為WPF的邊框虛線問題

    這篇文章主要介紹了OpenXml?Pptx的邊框虛線轉為WPF的邊框虛線,在文中用PPTX的7種直線,分別設置7種能夠設置的虛線類型,具體實例代碼跟隨小編一起看看吧
    2021-12-12
  • c# 生成文字圖片和合并圖片的示例

    c# 生成文字圖片和合并圖片的示例

    這篇文章主要介紹了c# 生成文字圖片和合并圖片的示例,幫助大家更好的利用c#處理圖片,感興趣的朋友可以了解下
    2020-12-12
  • .NET C#利用ZXing生成、識別二維碼/條形碼

    .NET C#利用ZXing生成、識別二維碼/條形碼

    ZXing是一個開放源碼的,用Java實現(xiàn)的多種格式的1D/2D條碼圖像處理庫,它包含了聯(lián)系到其他語言的端口。這篇文章主要給大家介紹了.NET C#利用ZXing生成、識別二維碼/條形碼的方法,文中給出了詳細的示例代碼,有需要的朋友們可以參考借鑒。
    2016-12-12
  • C#中的正則表達式雙引號問題

    C#中的正則表達式雙引號問題

    正則表達式獲取CSS里面的圖片的例子,里面有URL里面的圖片地址有雙引號,要注意用兩個雙引號表示
    2015-05-05
  • C#搜索文字在文件及文件夾中出現(xiàn)位置的方法

    C#搜索文字在文件及文件夾中出現(xiàn)位置的方法

    這篇文章主要介紹了C#搜索文字在文件及文件夾中出現(xiàn)位置的方法,涉及C#針對文件及文件夾遍歷與查找的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • Unity制作游戲自定義按鍵詳解

    Unity制作游戲自定義按鍵詳解

    這篇文章主要介紹了在Unity中如何實現(xiàn)游戲自定義按鍵,文中的示例代碼講解詳細,對我們學習Unity有一定幫助,感興趣的可以跟隨小編學習一下
    2022-01-01
  • c#解壓文件的實例方法

    c#解壓文件的實例方法

    該方法適應應用桌面快捷鍵壓縮的文件,zip,rar格式的文件進行解壓!
    2013-05-05

最新評論