【问题标题】:Remove html markup from string从字符串中删除 html 标记
【发布时间】: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;。所以如果我不使用正则表达式,我应该使用什么?

标签: c# html asp.net regex


【解决方案1】:

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

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

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

【讨论】:

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

    或者

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

    About HtmlAgilityPack

    Nuget Package Link

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2010-09-19
        • 1970-01-01
        • 2013-02-21
        • 2011-04-15
        相关资源
        最近更新 更多