整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          「C#實戰」一行代碼搞定!高效移除HTML標簽還原純凈文本

          HTML文本中移除所有HTML標記并提取純文本是我們經常需要使用的文本內容處理方式,比如搜索引擎、網站爬蟲或者本地文檔檢索系統需要提取網頁或HTML文檔的實際內容進行索引。通過去除HTML標簽,可以專注于實際的文字信息,提高搜索結果的相關性和準確性。在新聞聚合應用或社交媒體平臺上展示網頁鏈接的摘要時,通常會提取并顯示純文本內容以提供簡潔的預覽。對于視覺障礙人士使用的輔助技術如屏幕閱讀器,它們無法解析復雜的HTML結構,因此需要提取純文本以便朗讀給用戶。所以今天給大家分享一個使用正則表達式移除所有的Html標記的方法,供有需要的朋友們參考:

          第一個核心代碼是:正則表達式"<.*?>"

          // 示例用法:

          string inputHtml = "<html><body><h1>Hello, World!</h1>This is a <b>test</b>.</body></html>";

          string plainText = RemoveHtmlTags(inputHtml);

          Console.WriteLine(plainText); // 輸出: "Hello, World!This is a test."

          public static string RemoveHtmlTags(string html)

          {

          // 正則表達式用于匹配HTML標簽

          Regex regex = new Regex("<.*?>", RegexOptions.Singleline | RegexOptions.Compiled);

          // 使用正則表達式的Replace方法移除所有匹配的HTML標簽

          string result = regex.Replace(html, String.Empty);

          return result;

          }

          這個正則表達式<.*?>是非貪婪匹配任何以 < 開始、以 > 結束的字符串,它會盡可能少地匹配字符以找到每個HTML標簽。

          請注意,雖然此方法對于簡單場景可能有效,但對復雜的HTML文檔(特別是含有嵌套標簽、注釋、CDATA等內容)可能不夠健壯,因為它無法處理所有可能的HTML結構。

          第二個核心代碼是:正則表達式"<[^>]*>"

          public static string ExtractPlainTextFromHtml(string html)

          {

          // 使用正則表達式匹配所有的HTML標簽

          // 注意:這個簡單的正則表達式適用于大多數基礎HTML結構,但可能無法處理復雜嵌套或特殊格式的HTML

          Regex regex = new Regex("<[^>]*>", RegexOptions.Singleline | RegexOptions.Compiled);

          // 使用Replace方法去除所有匹配到的HTML標簽,并返回純文本內容

          string plainText = regex.Replace(html, String.Empty);

          return plainText.Trim(); // 為了得到更整潔的結果,可以對結果進行trim操作以去除多余的空白字符

          }

          在這段代碼中,我們定義了一個名為ExtractPlainTextFromHtml的方法,該方法利用正則表達式 <[^>]*> 來查找并替換所有HTML標簽。這里的正則表達式表示任何以 < 開始、以 > 結束的非空字符串(即HTML標簽),Singleline 選項使.能匹配換行符,以便跨多行搜索標簽,而 Compiled 選項則是為了優化正則表達式的性能。

          第二個核心代碼是:正則表達式"<[^>]*>"

          public static string RemoveHtmlTags(string html)

          {

          // 正則表達式,匹配所有HTML標簽

          string pattern = "<[^>]+>";

          // 使用Regex.Replace方法移除所有匹配的HTML標簽

          return Regex.Replace(html, pattern, String.Empty);

          }

          請注意,此方法僅移除HTML標記,不會解析或處理嵌入在HTML中的JavaScript代碼或其他非標記內容。此外,此方法也無法處理不規范或不符合預期格式的HTML標記。如果需要更復雜的HTML解析或清理,您可能需要使用專門的HTML解析庫,如AngleSharp或HtmlAgilityPack等。

          盡管上述方法對于許多簡單場景已經足夠有效,但在面對復雜的HTML文檔時,由于HTML本身的嵌套和特殊結構,簡單的正則表達式可能無法完美地解析并移除所有標簽。在這種情況下,推薦使用專門為處理HTML設計的庫,如HtmlAgilityPack,它可以準確地解析HTML并提供豐富的API用于提取純文本內容。

          過上一章的內容,現在網頁文件中,我們還須要去除的就是html代碼了。

          下面我們要研究一下html代碼的主要特點,不管什么樣的HTML代碼,他們均被左右尖括號所包圍,就像這個樣子<代碼>,因此,我們就有了去除的方法,把括號中的內容和聯通括號一起去除掉,就可以了。

          下面開始,根據我們的想法,可以寫出,下面這樣的主程序

          看上圖,再上一張定義的函數,我們把它移動到了通用函數庫中

          第21行,這是我們新增的代碼,執行完這個代碼,就去除掉了HTML標記,剩下的就應該是純文字內容了。在這里,我們定義了一個函數,名字叫做去除html代碼

          下面我們研究一下,這個函數的內容,如下圖

          因為使用了正則表達式,因此,在程序運行前,必須導入模塊re

          第3行,導入我們所需要的re模塊,我們想用到正則表達式

          第5行,定義函數

          第6行,用右尖括號分格隔成列表

          第8行,對列表元素進行遍歷

          第9行,使用正則挑出有效的內容,其實就是去除以前孤立的右尖括號的內容。

          第10行,對有效的內容進行左尖括號分隔

          第11行,左尖括號前面的內容就是有效的文字內容

          完整的程序如下

          下面我們對程序進行下測試,在上一章中,程序運行后得到如下的內容(內容太長,只截取一小部分)

          本次程序改造后,運行得到下面的內容


          從上面兩個圖片可以看出,我們確實把文字內容提取出來了。

          .處理前需要進入架包

          <dependency>

          <groupId>net.htmlparser.jericho</groupId>

          <artifactId>jericho-html</artifactId>

          <version>3.2</version>

          </dependency>

          2.工具類:

          public static String getPlainTextWithoutHtmlTag(String content) {

          if(content == null || "".equals(content)){

          return "";

          }else{

          Source src = new Source(content);

          String str = src.getTextExtractor().toString().trim();

          return str.replaceAll(" ","").replaceAll(" ", "");

          }

          }

          3.例子

          處理前:<p style="text-align:left;">

          王某某,副主任醫師,上海中醫藥大學博士,南京軍區南京總醫院腎臟病研究所博士后,全國第四批名老中醫學術繼承人。擅長中西醫結合治療腎內科疾病,對各種原發性和繼發性腎小球疾病的病理診斷與臨床治療、以及中早期慢性腎功能衰竭的“一體化”治療積累了豐富經驗,尤其對糖尿病腎病、<span>IgA</span><span>腎病、膜性腎病、狼瘡性腎炎、局灶節段性腎小球硬化癥、肥胖相關性腎病等疾病進行了深入研究。近年來發表學術論文十余篇,主持、參與科研課題五項。</span>

          </p>

          <p>

          <br />

          </p>

          處理后:王某某,副主任醫師,上海中醫藥大學博士,南京軍區南京總醫院腎臟病研究所博士后,全國第四批名老中醫學術繼承人。擅長中西醫結合治療腎內科疾病,對各種原發性和繼發性腎小球疾病的病理診斷與臨床治療、以及中早期慢性腎功能衰竭的“一體化”治療積累了豐富經驗,尤其對糖尿病腎病、IgA腎病、膜性腎病、狼瘡性腎炎、局灶節段性腎小球硬化癥、肥胖相關性腎病等疾病進行了深入研究。近年來發表學術論文十余篇,主持、參與科研課題五項。

          大家可關注我的博客,一起交流學習

          原文:https://blog.csdn.net/weixin_42720002/article/details/91510797


          主站蜘蛛池模板: 久久99精品波多结衣一区| 东京热无码av一区二区| 一区二区三区日韩| 日韩一区在线视频| 人妻天天爽夜夜爽一区二区| 色噜噜一区二区三区| 五十路熟女人妻一区二区 | 中文字幕人妻丝袜乱一区三区| 在线视频精品一区| 国内精自品线一区91| 国产日韩精品视频一区二区三区| 亚洲国产精品第一区二区| 人妻少妇一区二区三区| 国产综合无码一区二区辣椒| 国产99精品一区二区三区免费| 内射白浆一区二区在线观看| 日本美女一区二区三区 | 久久国产香蕉一区精品| 亚洲熟女乱综合一区二区| 国产一区二区三区精品久久呦| 国产精品无码一区二区三区毛片| 海角国精产品一区一区三区糖心| 亚洲精品精华液一区二区| 国产精品亚洲一区二区在线观看| 在线观看中文字幕一区| 国产伦精品一区二区三区不卡| 国产乱码精品一区二区三区 | 亚洲av日韩综合一区二区三区| 亚洲AV一区二区三区四区| 亚洲国产欧美日韩精品一区二区三区| 国产精品一区视频| 免费无码AV一区二区| 久久99精品免费一区二区| 亚洲AV无码一区二区乱孑伦AS| 日韩精品无码免费一区二区三区 | 波多野结衣一区二区三区| 在线观看日韩一区| 丝袜人妻一区二区三区网站| 亚洲国产精品一区第二页| 亚洲国产成人久久一区二区三区| 国产精品盗摄一区二区在线|