亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#使用for循環移除HTML標記

2020-01-24 01:01:06
字體:
來源:轉載
供稿:網友

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

看下面的代碼:

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標記,一個是使用正則表達式,一個是使用字符數組在for循環中進行處理。來看一下測試的結果:

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有一些缺點,在某些情況下它的啟動時間會增加數十倍。具體的內容可以查看下面這兩篇文章:

RegexOption.Compiled
Regex Performance

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

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

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

對于自關閉的HTML標記

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

Supported tags

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

HTML文檔中的注釋

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

如何驗證

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

HTML Brackets: Validation

Validate XHTML

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美成人网| 国产精品久久久久久久久久三级| 日韩在线视频中文字幕| 色老头一区二区三区| 在线观看国产欧美| 欧美激情国产日韩精品一区18| 自拍偷拍亚洲欧美| 久久国产精品久久国产精品| 亚洲欧美另类人妖| 欧美性生交xxxxx久久久| 久久精品人人爽| 国产午夜精品视频免费不卡69堂| 欧美一级免费看| 欧洲日本亚洲国产区| 日韩美女在线看| 日韩人体视频一二区| 亚洲精品久久久久久久久| 久久久精品国产一区二区| 国产精品黄色影片导航在线观看| 久久久久久久999精品视频| 欧美电影电视剧在线观看| 欧美日韩加勒比精品一区| 色综合老司机第九色激情| 日韩视频中文字幕| 亚洲欧美日韩高清| 国产精品自拍视频| 夜夜嗨av一区二区三区四区| 欧美黑人性猛交| 色狠狠av一区二区三区香蕉蜜桃| 久久综合亚洲社区| 隔壁老王国产在线精品| 一区二区欧美在线| 韩国三级电影久久久久久| 久久成人这里只有精品| 欧美精品日韩三级| 国外色69视频在线观看| 欧美国产精品人人做人人爱| 日韩精品小视频| 91成人天堂久久成人| 亚洲精选中文字幕| 欧美在线视频观看| 97视频在线观看播放| 中文字幕国产亚洲| 国语自产精品视频在线看| 国产精品视频在线观看| 亚洲一区二区自拍| 欧美一区二区三区艳史| 一区二区三区四区视频| 中文字幕少妇一区二区三区| 欧美日韩在线观看视频| 日韩久久午夜影院| 中文字幕亚洲精品| 久久精品视频中文字幕| 欧美精品一二区| 亚洲最新在线视频| 国产成人精品久久二区二区| 日韩av成人在线观看| 国产精品v片在线观看不卡| 久久6免费高清热精品| 亚洲国产精彩中文乱码av在线播放| 成人国产亚洲精品a区天堂华泰| 亚洲自拍偷拍色片视频| 中文字幕亚洲无线码在线一区| 国产精品高潮呻吟久久av无限| 亚洲国产天堂网精品网站| 92国产精品视频| 亚洲国产99精品国自产| 美女撒尿一区二区三区| 欧美在线亚洲一区| 国产精品成人av在线| 另类天堂视频在线观看| 亚洲一区二区久久| 亚洲精品久久久久久久久久久久久| 欧美怡红院视频一区二区三区| 一本久久综合亚洲鲁鲁| 亚洲人成77777在线观看网| 欧美极品少妇xxxxⅹ裸体艺术| 欧美日韩性视频在线| 91国自产精品中文字幕亚洲| 欧美激情高清视频| 4444欧美成人kkkk| 亚洲国产91色在线| 亚洲欧美国产一区二区三区| 久久精品国产亚洲精品2020| 国产精品一区二区三区在线播放| 亚洲电影免费观看高清完整版在线| 亚洲a中文字幕| 一本色道久久88综合日韩精品| 国产亚洲精品一区二555| 亚洲精品在线视频| 欧美国产第二页| 国产精品欧美亚洲777777| 国产精品久久久久久av| 亚洲精品视频在线观看视频| 日韩在线欧美在线| 亚洲在线www| 亚洲精品电影在线| 亚洲第一视频网站| 日韩有码在线视频| 91亚洲精华国产精华| 亚洲伦理中文字幕| 久久久亚洲影院你懂的| 亚洲欧洲日产国码av系列天堂| 中文综合在线观看| 日韩www在线| 久久免费视频在线观看| 日韩精品在线观看视频| 97视频免费观看| 中文字幕欧美日韩精品| 日韩极品精品视频免费观看| 亚洲国产精品推荐| 欧美成人精品h版在线观看| 欧美又大粗又爽又黄大片视频| 91精品国产高清自在线看超| 91精品视频播放| 亚洲激情中文字幕| 国产日韩精品入口| 国产精品亚洲аv天堂网| 综合国产在线视频| 欧美极品美女视频网站在线观看免费| 国产精品视频1区| 久久久久久国产精品三级玉女聊斋| 国产精品欧美日韩久久| 成人免费网站在线观看| 欧美高清性猛交| 国产精品av在线| 美女福利精品视频| 色一区av在线| 欧美性猛交xxxx免费看| 国产精品网红福利| 精品中文字幕久久久久久| 国产一区二区在线免费视频| 国产美女高潮久久白浆| 欧美精品中文字幕一区| 另类专区欧美制服同性| 亚洲精品一区中文| 亚洲自拍高清视频网站| 亚洲性夜色噜噜噜7777| 日韩av在线网页| 97在线精品视频| 亚洲视频在线观看网站| 欧美激情亚洲自拍| 色综合色综合久久综合频道88| 日韩视频免费在线| 亚洲国产精品人人爽夜夜爽| 欧美另类高清videos| 中文精品99久久国产香蕉| 日韩av在线网页| 国产mv久久久| 97激碰免费视频| 欧美乱大交做爰xxxⅹ性3| 欧美色另类天堂2015| 亚洲一区二区久久| 日韩在线激情视频| 另类图片亚洲另类| 亚洲综合日韩在线| 亚洲第一页自拍| 亚洲精品动漫100p| 欧美不卡视频一区发布| 在线激情影院一区| 97精品视频在线观看| 国产成人精品在线观看| 久久精品中文字幕一区| 国产日韩换脸av一区在线观看|