从字符串中删除 html 标记

Posted

技术标签:

【中文标题】从字符串中删除 html 标记【英文标题】:Remove html markup from string 【发布时间】:2017-09-06 19:21:48 【问题描述】:

我正在从数据库中读取一个字段并在 GridView 中显示,并且在该字段中它包含 <br/> 文本中的标签。所以我试图从代码中删除这些,但是当我检查e.Row.Cells[index].Text 的值时,它不包含<br/>,而是有;br/>

所以我尝试创建一个函数来删除任何以< 开头并以> 结尾或以& 开头并以; 结尾的子字符串。该代码删除了<>,但仍显示br/

代码:

index = gv.Columns.HeaderIndex("Message");
if (index > 0)

   string message = RemovehtmlMarkup(e.Row.Cells[index].Text);
   e.Row.Cells[index].Text = message;


static string RemoveHTMLMarkup(string text)

        return Regex.Replace(Regex.Replace(text, "<.+?>", string.Empty), "&.+?;", string.Empty);

如何删除&amp;lt;br/&amp;gt; 标签?

【问题讨论】:

Obligatory link关于为什么ṫ̨̗̺̭̮̞̗̜̮̗̙̫̺̖̭̯͊ͨ̌͒̍͘͘͟͝ḩ̸̴͓̩̙͙̻̗͔̞̘̟̩̯͋͑͐ͨͭ͒ͯ̓͐̇ͥ͢҉̴̧ͨͭ͒ͯ̓͐̇ͥ͢҉̨̳̜̤͍͖t̵̳̳͕͉͋̓͐ͦͬ̈̚是一个坏主意。另外,您确定是;br/&amp;gt; 而不是&amp;lt;br/&amp;gt; @ThomasAyoub 是的,你是对的,它是&amp;lt;br/&amp;gt;。所以如果我不使用正则表达式,我应该使用什么? 【参考方案1】:

由于这是一个文字字符串,你(sh|c)只能使用String.Replace()

static string RemoveHTMLNewLines(string text)

    return text.Replace("&lt;br/&gt;", string.Empty);

如果需要,或者替换为Environment.NewLine

【讨论】:

【参考方案2】:
    取消实体化字符串。 然后使用正则表达式来查找和删除预期的标签。

或者

如果你有足够的时间学习和使用,那就使用HtmlAgilityPack包吧。

About HtmlAgilityPack

Nuget Package Link

【讨论】:

【参考方案3】:

不管这个问题,我很好奇这是什么:

【讨论】:

以上是关于从字符串中删除 html 标记的主要内容,如果未能解决你的问题,请参考以下文章

从 Python 字符串中删除不在允许列表中的 HTML 标记

从字符串中删除 HTML 标记并保留“:”(冒号)[重复]

如何从字符串中删除 HTML 标记

从字符串中删除 html 标记

JavaScript 从字符串中删除HTML标记

从 javascript 字符串中删除特定的 HTML 标记及其内容