簡體   English   中英

連續刪除 <br> 來自字符串使用正則表達式c#

[英]Remove consecutive <br> from string using regex c#

我有以下字符串正則表達式

"choose to still go on the trip. <br><br>\r\nNote that when booking"

用正則表達式轉換后我需要用一個<br>替換<br>標簽,所以字符串就是這樣的

"choose to still go on the trip. <br>Note that when booking"

這可以使用HTML Agility Pack (開源項目http://html-agility-pack.net )以另一種(更安全)的方式完成。

它考慮到各種符號<br><br/><br /> 沒有你不必擔心它 這意味着您可以專注於實際任務:替換重復項。

請參閱使用HTML Agility Pack刪除重復元素鏈 ,它解釋了如何替換重復項的方法。

如果您需要考慮標記之間有空格的情況,請嘗試以下正則表達式:

myInputStr = Regex.Replace(myInputStr,
    @"([\b\s]*<[\b\s]*[bB][rR][\s]*/?[\b\s]*>){2,}",
    "<br>", RegexOptions.Multiline);

無論標簽的形成如何(間距,套管,自閉合等),此正則表達式都將用單個實例替換2個或更多個<br>標簽實例。

編輯:如果你不知道有多少<br>你有,你可以這樣做:

  1. <br>拆分字符串並刪除空條目。
  2. 用single <br>加入字符串

這是代碼:

string yourString = "choose to still go on the trip. <br><br>\r\nNote that when booking";

var temp = 
    yourString.Split(new string[] { "<br>" }, StringSplitOptions.RemoveEmptyEntries)
               .Where(i => i.Replace(" ", string.Empty).Length > 0);

string result = string.Join("<br>", temp);

像馬丁伊登一樣:

while (text.Contains("<br><br>")) 
{ 
    text = text.Replace("<br><br>", "<br>"); 
}    

要么

string newString = oldString.Replace("<br><br><br>", "<br>");
newString = newString.Replace("<br><br>", "<br>");

通過增加<br>來做多個這樣的行

Regex.Replace(input, @"(<br\s*/{0,1}>\s*(</\s*br>)*){2,}", "<br>", 
    RegexOptions.CultureInvariant | 
    RegexOptions.IgnoreCase |
    RegexOptions.Multiline);

用一個<br>替換任何兩個或更多個<br><br/>或者<br></br>的出現。

這需要考慮空白。 <br > <br > </ br> <br /> <br > </ br>

如果您事先刪除了不需要的“\\ r \\ n”,則可以省略RegexOptions.Multiline

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM