我尝试使用以下函数将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转换为纯文本。 任何人都可以建议我任何其他转换功能吗?
由于
答案 0 :(得分:2)
您可以使用HtmlAgilityPack
的HtmlToText演示,该演示可以是found here。
我看了其他答案,但他们都提出了涉及正则表达式的各种解决方案。我认为HtmlAgilityPack
没有得到足够的重视。
您需要做的就是在项目中插入NuGet package并按照示例进行操作。