在句子中查找标签,排除它们,然后将它们放回到相同的顺序和位置

时间:2015-11-03 12:57:04

标签: c# .net

假设我有一些像这样的字符串:

string str = "This is an <b>Example</b> of the string"

我需要从字符串中取出<b></b>并使其看起来像这样,所以我可以像其他那样使用它来打印:

string edtStr = "This is an Example of the string."

但之后,我想要重新标记这些标签,以便我可以使用粗体属性打印该部分。最简单的方法是什么?

2 个答案:

答案 0 :(得分:3)

创建一个没有html标记的新字符串,而现有字符串保持不变。您可以将它们用于不同目的。

字符串在C#中是不可变的。

答案 1 :(得分:1)

您需要使用html解析器阅读HTML。这是使用HTML Agility Pack的小程序。诀窍是node.RemoveChild(oldChild, keepGrandChild)。您可以通过添加删除的所有标记来扩展逻辑,例如<b>, <i>等。

    static void Main(string[] args)
    {
        string html = "<span>This is an <b>Example</b> of the string</span>";

        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(html);

        List<HtmlNode> spanNodes = doc.DocumentNode.Descendants().Where(x => x.Name == "span").ToList();

        foreach (HtmlNode node in spanNodes)
        {
            HtmlNode boldNode = node.SelectSingleNode("b");
            node.RemoveChild(boldNode, true);
        }

        Console.WriteLine(doc.DocumentNode.OuterHtml);
    }

为此,您需要使用NuGet

进行安装
PM> Install-Package HtmlAgilityPack

并添加using HtmlAgilityPack;