日期:2014-05-19  浏览次数:20414 次

关于截取HTML字符显示的问题
我想取文章的前100字,但是数据库里库的是html格式的文章
怎么样取文章字?
如果没办法只能取html格式字符.只取前面100个html字符的话不同的文章显示出来字数有多有少,高度也不一样,如果很多 <br> 的话就显得很高,看起来很别扭.有什么办法整齐一点?

------解决方案--------------------
public static string RemoveHTML(string strHTML)
{
System.Text.RegularExpressions.Regex Regexp=new System.Text.RegularExpressions.Regex( " <.+?> ");
string strReturn=Regexp.Replace(strHTML, " ");
return strReturn;
}
去处html标记.
------解决方案--------------------
using System.Text.RegularExpressions;
Regex rx = new Regex(@ "( <\/?(?!td|tr|u|table|img|sup|p)[^> \/]*)\/?> | <![^> ]+> ",RegexOptions.IgnoreCase);
string strNewText = rx.Replace( "你的源字符 ", " ");


td|tr|u|table|img|sup|p是要保留的HTML字符,如果你不想保留表格,可以去除td,td,table
即如下:( <\/?(?!u|img|sup|p)[^> \/]*)\/?> | <![^> ]+>
------解决方案--------------------
以前写的一个你需要的东东

public string GetNoHtml(string Str, int i)//去掉字符串中html字符后取左边的i位
{
string str_Countent = " ", str_Countentls = " ";

str_Countent = Str.ToString().Replace( "&nbsp; ", " ").Replace( "  ", " ");

str_Countentls = str_Countent.Split( ' < ')[0];
for (int j = 1; j < str_Countent.Split( ' < ').Length; j++)
str_Countentls += str_Countent.Split( ' < ')[j].Split( '> ')[1];
str_Countent = str_Countentls;

return GetLeftStr(str_Countent, i);
}

public string GetLeftStr(string Str, int i)//取字符串中左边的i位
{
string val;
if (Str.ToString().Length > i)
val = Str.ToString().Substring(0, i);
else
val = Str.ToString();
return val;
}
------解决方案--------------------
public static string RemoveHTML(string strHTML)
{
System.Text.RegularExpressions.Regex Regexp=new System.Text.RegularExpressions.Regex( " <.+?> ");
string strReturn=Regexp.Replace(strHTML, " ");
return strReturn;
}
用上面这个函数去除html标记后 用下面的函数窃取字符串即可

/// <summary>
/// 字符长度控制 中文 英文识别!
/// 注:一个汉字作为2个字符长度处理
/// </summary>
/// <param name= "str "> 要进行切割的字符串 </param>
/// <param name= "len "> 返回的长度(自动识别中英文) </param>
/// <param name= "isExt "> 是否输出... </param>
/// <returns> </returns>
public static string CutString(string str, int len, bool isExt)
{
byte[] sarr = System.Text.Encoding.Default.GetBytes(str);

if (sarr.Length > len)
return System.Text.Encoding.Default.GetString(sarr, 0, len) + (isExt ? "... " : " ");
else
return str;
}