您的位置:首页 > Web前端 > HTML

正则表达式相关:正则表达式处理html内容

2012-06-06 09:47 387 查看
前面关于显示html文本用了浏览器控件来处理(/article/1419490.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;
}

结果:



richtextbox中是正则表达式处理效果,webbrowser是原文本显示效果。

源代码:http://download.csdn.net/detail/yysyangyangyangshan/4354953
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: