如何将HTML转换为纯文本

3
我尝试使用以下函数将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转换为纯文本。有人能否建议我其他的转换函数?
谢谢。
1个回答

2
你可以使用 HtmlAgilityPack 的 HtmlToText 示例,可以在 这里 找到。
我看了其他答案,但它们都提供了涉及正则表达式的各种解决方案。我认为 HtmlAgilityPack 没有得到足够的关注。
你所需要做的就是将 NuGet 包 集成到你的项目中,并按照示例进行操作。

不值得使用。它无法正确处理空格。 - Jitendra Pancholi
1
@JitendraPancholi:不确定您尝试了什么,但通常在文档上设置OptionWriteEmptyNodes = true,特别是在输出到文本时,效果很好。 - Marcel N.
如何使用此选项?提供示例代码将不胜感激。 - Jitendra Pancholi
1
CodePlex已经不存在了,我相信这个新链接指向了github上相同的演示:链接 - blit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接