【问题标题】:Removing <div>'s from text file?从文本文件中删除 <div> 的?
【发布时间】:2010-10-16 08:24:21
【问题描述】:

我在 C#.net 中做了一个小程序,它并没有真正起到什么作用,它根据今天的新闻告诉你你的 DOOM 的机会大声笑。它会从 BBC 网站加载 RSS,然后会寻找增加或减少 DOOM 概率百分比的关键词。

疯狂的小项目,也许有一天这些课程会派上用场,再次用于更重要的事情。

我收到的是 xml 格式的 RSS,但它包含很多 div 标签和格式化字符,我真的不想在关键字数据库中,

删除这些不需要的字符和 div 的最佳方法是什么?

谢谢,

【问题讨论】:

  • 听起来不错,我们在哪里可以买到:D

标签: c# xml html


【解决方案1】:

如果您还想删除带有内容的 DIV 标签:

string start = "<div>";
string end = "</div>";
string txt = Regex.Replace(htmlString, Regex.Escape(start) + "(?<data>[^" + Regex.Escape(end) + "]*)" + Regex.Escape(end), string.Empty);

输入:&lt;xml&gt;&lt;div&gt;junk&lt;/div&gt;XXX&lt;div&gt;junk2&lt;/div&gt;&lt;/xml&gt;

输出:&lt;xml&gt;XXX&lt;/xml&gt;

【讨论】:

  • 哦,好吧,我明白了,所以您定义了开始和结束标签并基本上将其全部删除!太棒了,正是我需要的谢谢!
【解决方案2】:

这样的正则表达式:

<([A-Z][A-Z0-9]*)\b[^>]*>(.*?)</\1> 

将突出显示所有 HTML 标记。

使用它从您的数据中删除它们。

【讨论】:

  • 在编写正则表达式时,您必须按一定的顺序排列字符吗?顶部的答案是更轻松的表达?还是不会删除所有字符?
  • 老实说,我在这里提到的正则表达式也会删除标签中的所有内容。这可能不是你想要的。
【解决方案3】:

从给定的字符串中去除 HTML 标记是一种常见的要求,您可能会在网上找到许多资源来为您做到这一点。

然而,可接受的方法是使用基于正则表达式的搜索和替换。 This article 提供了一个很好的示例以及基准测试。值得一提的另一点是,您需要针对所看到的不同类型的不需要的字符进行单独的基于正则表达式的查找。 (也许向我们展示您收到的 HTML 示例会有所帮助)

请注意,您的要求可能会因您要删除的标签而异。在您的问题中,您只提到了 DIV 标签。如果这是您需要替换的唯一标记,那么简单的字符串搜索和替换就足够了。

【讨论】:

    【解决方案4】:

    恕我直言,最简单的方法是使用正则表达式。比如:

    string txt = Regex.Replace(htmlString, @"<(.|\n)*?>", string.Empty);
    

    当然,根据您要删除的标签和字符,您将修改正则表达式。如果您在网络上搜索'strip html C#',您会发现很多关于此方法和其他方法的资料。

    所以问题Render or convert Html to ‘formatted’ Text (.NET) 也可能对您有所帮助。

    【讨论】:

    • 这是有效的答案,但它基本上删除了所有的聊天对象,然后在他们的位置放置一个空白空间,一旦拆分成一个数组,数据库中就会有很多空白空间。我该如何解决?还有什么方法可以添加一个参数来删除 /n 和 /t 之类的字符?
    • 不知道为什么您会看到 extra 空格 - string.Empty 会用“”而不是“”替换标签。有可能您没有去除 RSS 中多余的空白(制表符“\t”、换行符“\n”等)——您可能希望进一步替换或添加它们。跨度>
    猜你喜欢
    • 2012-02-19
    • 2016-04-22
    • 2015-07-30
    • 1970-01-01
    • 2018-01-16
    • 2021-12-23
    • 2015-12-22
    相关资源
    最近更新 更多