前面关于显示html文本用了浏览器控件来处理,这个不过是为了解决燃眉之急不得已才使用。其实最好还是使用正则表达式处理,也就是自己写一个html文本解释器,当然这个实现起来也是不容易的,首先你得将所有html文本标签罗列出来,然后一一翻译。下面先搞一个简单的例子吧。

public static string ConvertToBrowserText(string source) { string result = string.Empty; result = source.Replace("/r", " "); result = result.Replace("/n", " "); result = result.Replace("/t", " "); result = Regex.Replace(result, "(<head>).*(</head>)", string.Empty, RegexOptions.IgnoreCase); result = Regex.Replace(result, @"<( )*script([^>])*>", "<script>", RegexOptions.IgnoreCase); result = Regex.Replace(result, @"(<script>).*(</script>)", string.Empty, RegexOptions.IgnoreCase); result = Regex.Replace(result, @"<( )*style([^>])*>", "<style>", RegexOptions.IgnoreCase); result = Regex.Replace(result, "(<style>).*(</style>)", string.Empty, RegexOptions.IgnoreCase); result = Regex.Replace(result, @"<( )*td([^>])*>", " ", RegexOptions.IgnoreCase); result = Regex.Replace(result, @"<( )*br( )*>", "/r", RegexOptions.IgnoreCase); result = Regex.Replace(result, @"<( )*li( )*>", "/r", RegexOptions.IgnoreCase); result = Regex.Replace(result, @"<( )*tr([^>])*>", "/r/r", RegexOptions.IgnoreCase); result = Regex.Replace(result, @"<( )*p([^>])*>", "/r/r", RegexOptions.IgnoreCase); result = Regex.Replace(result, @"<[^>]*>", string.Empty, RegexOptions.IgnoreCase); result = Regex.Replace(result, @"&", "& ", RegexOptions.IgnoreCase); result = Regex.Replace(result, @" ", " ", RegexOptions.IgnoreCase); result = Regex.Replace(result, @"<", "<", RegexOptions.IgnoreCase); result = Regex.Replace(result, @">", ">", RegexOptions.IgnoreCase); result = Regex.Replace(result, @"&(.{2,6});", string.Empty, RegexOptions.IgnoreCase); result = Regex.Replace(result, @" ( )+", " "); result = Regex.Replace(result, "(/r)( )+(/r)", "/r/r"); result = Regex.Replace(result, @"(/r/r)+", "/r/n"); result = Regex.Replace(result, @"/r/n", System.Environment.NewLine); result = Regex.Replace(result, @"/r", System.Environment.NewLine); result = Regex.Replace(result, @"/r/r", System.Environment.NewLine); result = Regex.Replace(result, @"/s", ""); return result; }

结果:

正则表达式相关:正则表达式处理html内容_控件
richtextbox中是正则表达式处理效果,webbrowser是原文本显示效果。