如何将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转换为纯文本。谁能给我推荐其他的转换函数吗?

谢谢

如何将HTML转换为纯文本

您可以使用HtmlAgilityPack的HtmlToText演示,可以在这里找到。

我看了看其他的答案,但他们都建议各种解决方案涉及正则表达式。我认为HtmlAgilityPack没有得到足够的重视。

您所需要做的就是将NuGet包插入到您的项目中,并按照示例操作。