【问题标题】:C# Remove Span Tags I InsertC#删除我插入的跨度标签
【发布时间】:2011-12-21 12:01:31
【问题描述】:

通过所见即所得的文本编辑器,我插入带有“评论”类的跨度标签。我想从字符串中删除 span 标签及其内容的任何实例

那么我如何从这里得到:

string content = "<p>sadf<span class="otherclass"><span class="comment">asdfsdafsdafsadfsdf</span></span></p>";

到这里:

content = "<p>sadf<span class="otherclass"></span></p>";

我知道 HTMLAgilityPack,但不想增加我控制的 HTML 的开销。我更喜欢正则表达式解决方案。

编辑:我只想删除带有“评论”类的跨度。

【问题讨论】:

  • 为什么您认为添加旨在解决您遇到的问题的库会产生开销?正则表达式不适合解析 HTML,这是一个公认的事实,因为它不能保证格式正确。
  • 我认为不应该仅仅因为标准是强制的,就应该延续不良做法。
  • 因为这似乎是一个简单的正则表达式解决方案。两个带有“comment”类的span标签之间永远不会有任何HTML,只有文本。我只是不擅长正则表达式。假装它不是 HTML。

标签: c# .net regex html-parsing


【解决方案1】:

过滤字符串的正则表达式为&lt;span\s+class=\"comment.*?span&gt; 您可能有兴趣尝试RegexBuddy。它帮助我很好地计算出我的正则表达式。

将正则表达式捕获为字符串并替换该字符串 string content

在我意识到您需要像 BLUEPIXY 一样删除 &lt;span class="comment"&gt;&lt;/span&gt; 之后进行编辑。

【讨论】:

    【解决方案2】:

    回答不充分:

    content = Regex.Replace(content, @"<span\s+class=""comment"">.*?</span>", "");
    

    【讨论】:

    • 不错。我错过了那里的另一节课
    • 一般来说,正则表达式不足以满足这些目的。
    • 最终使用了“.+?" 但感谢您的帮助。
    猜你喜欢
    • 2013-11-15
    • 2020-11-06
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    相关资源
    最近更新 更多