如何将HTML转换为纯文本
本文关键字:文本 转换 HTML | 更新日期: 2023-09-27 18:15:59
我尝试用以下函数将html转换为纯文本,但在转换时仍然出现错误。
private static string HtmlToPlainText(string html)
{
const string tagWhiteSpace = @"(>|$)('W|'n|'r)+<";//matches one or more (white space or line breaks) between '>' and '<'
const string stripFormatting = @"<[^>]*(>|$)";//match any character between '<' and '>', even when end tag is missing
const string lineBreak = @"<(br|BR)'s{0,1}'/{0,1}>";//matches: <br>,<br/>,<br />,<BR>,<BR/>,<BR />
var lineBreakRegex = new Regex(lineBreak, RegexOptions.Multiline);
var stripFormattingRegex = new Regex(stripFormatting, RegexOptions.Multiline);
var tagWhiteSpaceRegex = new Regex(tagWhiteSpace, RegexOptions.Multiline);
var text = html;
//Decode html specific characters
text = System.Net.WebUtility.HtmlDecode(text);
//Remove tag whitespace/line breaks
text = tagWhiteSpaceRegex.Replace(text, "><");
//Replace <br /> with line breaks
text = lineBreakRegex.Replace(text, Environment.NewLine);
//Strip formatting
text = stripFormattingRegex.Replace(text, string.Empty);
text = text.Replace(">", "");
return text;
}
当我试图调试代码时,它也以纯文本输出显示'r和'r'n。这个函数不能正确地将html转换为纯文本。谁能给我推荐其他的转换函数吗?
谢谢
您可以使用HtmlAgilityPack
的HtmlToText演示,可以在这里找到。
我看了看其他的答案,但他们都建议各种解决方案涉及正则表达式。我认为HtmlAgilityPack
没有得到足够的重视。
您所需要做的就是将NuGet包插入到您的项目中,并按照示例操作。