📜  c# strip html tags - Html (1)

📅  最后修改于: 2023-12-03 14:39:44.164000             🧑  作者: Mango

C# Strip HTML Tags - Html

在开发C#应用程序时,经常需要处理从HTML网页或富文本编辑器中获取的文本。这些文本通常包含HTML标记,但在某些情况下,我们需要删除这些HTML标记并提取干净的纯文本。

在C#中,可以使用多种方法从HTML字符串中删除标记。让我们看看一些最流行的方法。

使用正则表达式

使用正则表达式是一种常见的方法,可以用来匹配任何标记以及标记中的文本。下面是一个简单的方法,可用于删除HTML标记。

using System.Text.RegularExpressions;

private static string StripTagsRegex(string source)
{
    return Regex.Replace(source, "<.*?>", string.Empty);
}

其中,source是要处理的HTML字符串。

这里使用了Regex.Replace()方法和正则表达式<.*?>,它匹配所有的HTML标记。string.Empty用于替换标记,将其删除。

使用HtmlAgilityPack

使用HtmlAgilityPack是另一种广泛使用的技术,它提供了一种DOM(文档对象模型)方法来处理HTML文档。通过使用HtmlAgilityPack,我们可以轻松地浏览和处理HTML。

以下是使用HtmlAgilityPack的示例代码:

using HtmlAgilityPack;

private static string StripTagsHtmlAgilityPack(string source)
{
    var doc = new HtmlDocument();
    doc.LoadHtml(source);
    return doc.DocumentNode.InnerText;
}

这里,我们使用HtmlDocument类将HTML字符串加载到HTML文档中。然后,我们使用DocumentNode.InnerText获取文档中的纯文本内容。

使用XmlDocument

使用XmlDocument类也可以从HTML中删除标记。

using System.Xml;

private static string StripTagsXmlDocument(string htmlString)
{
    var xmlDoc = new XmlDocument();
    xmlDoc.LoadXml("<root>" + htmlString + "</root>");
    return xmlDoc.InnerText;
}

这里,我们使用XmlDocument类将HTML字符串加载到XML文档中。然后,我们使用InnerText属性获取文档中的纯文本内容。

使用扩展方法

我们还可以创建一个扩展方法,通过string类型的对象调用该方法来删除HTML标记。

using System.Text.RegularExpressions;

public static class StringExtensions
{
    public static string StripHtmlTags(this string source)
    {
        return Regex.Replace(source, "<.*?>", string.Empty);
    }
}

这里,我们创建了一个名为StripHtmlTags()的扩展方法。这个方法使用上面的正则表达式来替换HTML标记,并返回干净的纯文本字符串。

结论

这些都是从HTML字符串中删除标记的最流行方法。您可以根据您的需要选择其中任何一种方法。我们建议您在实现功能前,使用单元测试确保所有用例都被覆盖。