#region 获取文章概要
public static string GetContentSummary(string content, int length, bool StripHTML) {
if (string.IsNullOrEmpty(content) || length == 0) {
return "";
}
if (StripHTML){
Regex re = new Regex("<[^>]*>");
content = re.Replace(content, "");
content = content.Replace(" ", "").Replace(" ", "");
if (content.Length <= length)
{
return content;
}
else {
return content.Substring(0, length) + "……";
}
} else {
if (content.Length <= length) {
return content;
}
int pos = 0, npos = 0, size = 0;
bool firststop = false, notr = false, noli = false;
StringBuilder sb = new StringBuilder();
while (true) {
if (pos >= content.Length) {
break;
}
string cur = content.Substring(pos, 1);
if (cur == "<") {
string next = content.Substring(pos + 1, 3).ToLower();
if (next.IndexOf("p") == 0 && next.IndexOf("pre") != 0){
npos = content.IndexOf(">", pos) + 1;
} else if (next.IndexOf("/p") == 0 && next.IndexOf("/pr") != 0) {
npos = content.IndexOf(">", pos) + 1;
if (size < length) {
sb.Append("<br/>");
}
} else if (next.IndexOf("br") == 0) {
npos = content.IndexOf(">", pos) + 1;
if (size < length) {
sb.Append("<br/>");
}
} else if (next.IndexOf("img") == 0) {
npos = content.IndexOf(">", pos) + 1;
if (size < length) {
sb.Append(content.Substring(pos, npos - pos));
size += npos - pos + 1;
}
} else if (next.IndexOf("li") == 0 || next.IndexOf("/li") == 0) {
npos = content.IndexOf(">", pos) + 1;
if (size < length) {
sb.Append(content.Substring(pos, npos - pos));
} else {
if (!noli && next.IndexOf("/li") == 0) {
sb.Append(content.Substring(pos, npos - pos));
noli = true;
}
}
} else if (next.IndexOf("tr") == 0 || next.IndexOf("/tr") == 0) {
npos = content.IndexOf(">", pos) + 1;
if (size < length) {
sb.Append(content.Substring(pos, npos - pos));
} else {
if (!notr && next.IndexOf("/tr") == 0) {
sb.Append(content.Substring(pos, npos - pos));
notr = true;
}
}
} else if (next.IndexOf("td") == 0 || next.IndexOf("/td") == 0) {
npos = content.IndexOf(">", pos) + 1; if (size < length) {
sb.Append(content.Substring(pos, npos - pos));
} else {
if (!notr) {
sb.Append(content.Substring(pos, npos - pos));
}
}
} else {
npos = content.IndexOf(">", pos) + 1;
sb.Append(content.Substring(pos, npos - pos));
}
if (npos <= pos)
npos = pos + 1; pos = npos;
} else {
if (size < length) {
sb.Append(cur); size++;
} else {
if (!firststop) {
sb.Append("……");
firststop = true;
}
}
pos++;
}
}
return sb.ToString();
}
}
#endregion
调用方式:
在页面需要显示的部分写
<%#GetContentSummary(Eval("context").ToString(), 200, false)%>