📅  最后修改于: 2023-12-03 14:39:44.164000             🧑  作者: Mango
在开发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是另一种广泛使用的技术,它提供了一种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类也可以从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字符串中删除标记的最流行方法。您可以根据您的需要选择其中任何一种方法。我们建议您在实现功能前,使用单元测试确保所有用例都被覆盖。