li.的博客
li.的首页 > li.的博客 > 浏览文章

asp.net 截取带有html标签的字符串(先过滤html,再截取)的方法(待完善)

分类:.net应用  人气:1817  评论:0  时间:2010-01-06 15:41
用到这个的一般是显示文章内容的摘要的时候.
一般文章内容里有html的时候,用一般的截取,会将内容里的html一起给截出来,轻则显示出不必要的乱码,重则导致网站样式/布局的破坏.
要解决这个问题很容易,两步就可以搞定
一,过滤掉内容里的html.
二,截取过滤后的内容.
这里把c#的代码放出来.
//截取部分内容方法
public string strvalue(string value, int length)
{
if (value.Length > length)
{
value
= value.Substring(0, length);
value
= value + "...";
return NoHTML(value);
}
else
{
return NoHTML(value);
}
}

#region 回车,空格过滤
/**/
/// <summary>
/// 去除HTML标记
/// </summary>
/// <param name="NoHTML">包括HTML的源码 </param>
/// <returns>已经去除后的文字</returns>
public static string NoHTML(string Htmlstring)
{
//删除脚本
Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "",
RegexOptions.IgnoreCase);
//删除HTML
Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "",
RegexOptions.IgnoreCase);
Htmlstring
= Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "",
RegexOptions.IgnoreCase);
Htmlstring
= Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase);
Htmlstring
= Regex.Replace(Htmlstring, @"<!--.*", "", RegexOptions.IgnoreCase);
Htmlstring
= Regex.Replace(Htmlstring, @"&(quot|#34);", "\"",
RegexOptions.IgnoreCase);
Htmlstring
= Regex.Replace(Htmlstring, @"&(amp|#38);", "&",
RegexOptions.IgnoreCase);
Htmlstring
= Regex.Replace(Htmlstring, @"&(lt|#60);", "<",
RegexOptions.IgnoreCase);
Htmlstring
= Regex.Replace(Htmlstring, @"&(gt|#62);", ">",
RegexOptions.IgnoreCase);
Htmlstring
= Regex.Replace(Htmlstring, @"&(nbsp|#160);", " ",
RegexOptions.IgnoreCase);
Htmlstring
= Regex.Replace(Htmlstring, @"&(iexcl|#161);", "\xa1",
RegexOptions.IgnoreCase);
Htmlstring
= Regex.Replace(Htmlstring, @"&(cent|#162);", "\xa2",
RegexOptions.IgnoreCase);
Htmlstring
= Regex.Replace(Htmlstring, @"&(pound|#163);", "\xa3",
RegexOptions.IgnoreCase);
Htmlstring
= Regex.Replace(Htmlstring, @"&(copy|#169);", "\xa9",
RegexOptions.IgnoreCase);
Htmlstring
= Regex.Replace(Htmlstring, @"&#(\d+);", "",
RegexOptions.IgnoreCase);

Htmlstring.Replace(
"<", "");
Htmlstring.Replace(
">", "");
Htmlstring.Replace(
"\r\n", "");
Htmlstring
= HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();

return Htmlstring;
}
#endregion

代码就这些,记得要引用正则的命名空间  using System.Text.RegularExpressions;

剩下的就是在需要将需要截取的部分用strvalue 方法搞定!

标签(Tag):asp.net
评论(0)
暂无评论
我来评论
(800字以内)