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

本文关键字:位置 然后 顺序 排除 句子 标签 | 更新日期: 2023-09-27 18:20:26

假设我有这样的字符串:

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

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

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

但之后,我想把标签放回,这样我就可以用粗体属性打印那个部分。最简单的方法是什么?

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

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

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

您需要使用HTML解析器读取HTML。这是一个使用HTML敏捷包的小程序。做这个把戏的是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;