关于FREETEXTBOX 截取字符串的问题 所做网站有意新闻部分,数据库中保存的是FREETEXTBOX内容,即含各种标签、图片、链接、文字、表格等,现在如果要做一个内容预览,比如截取文章的前64字节的内容作为预览,若超过64字节则加上,不知有什么好的办法?如果有普通的截取前几十位很有可能截到得是标签,可能造成没有文字或是无结束标签。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、建议在做的时候把新闻描述和新闻内容分成两个字段,这样就可以避免很多问题了2、找一个过滤网页标记的方法,包括可能的word标记,然后先过滤掉,再截取。 先做解码,再调用GetCut函数截一部分 <p> <%# GetCut(Server.HtmlDecode(Eval("Content").ToString()),150) %> </p> public string GetCut(object content, int num) { if (content.ToString().Length > num - 2) return content.ToString().Substring(0, num - 2) + "..."; else return content.ToString(); } System.Text.RegularExpressions.Regex.Replace(content,@"<\/?[^>]+>","")用正则把HTML标记清楚,然后再截取文章的描述信息,并存储 lz说的就是开头有一段说明,后面加...,点击时候查看详情,建议还是将内容分成两端存储,一个字段用来存储FreeTextBox。text,另一个字段存储FreeTextBox。removeHtmlText。ToString()。substring(0,64)应该可以,如果直接从FreeTextBox中截取会有错误,将好多html字符计算在内。出现错误。 /// <summary> /// 截取字符串,中文按两个字符处理 /// </summary> /// <param name="stringToSub"></param> /// <param name="length"></param> /// <returns></returns> public static string GetFirstString(string stringToSub, int length) { //Regex regex = new Regex("[\u4e00-\u9fa5]+", RegexOptions.Compiled);匹配汉字 Regex regex = new Regex("[^x00-xff]+", RegexOptions.Compiled);//匹配双字节字符 char[] stringChar = stringToSub.ToCharArray(); StringBuilder sb = new StringBuilder(); int nLength = 0; bool isCut = false; for (int i = 0; i < stringChar.Length; i++) { if (regex.IsMatch((stringChar[i]).ToString())) { sb.Append(stringChar[i]); nLength += 2; } else { sb.Append(stringChar[i]); nLength = nLength + 1; } if (nLength > length) { isCut = true; break; } } //if (isCut) //return sb.ToString() + "..."; //else return sb.ToString(); }中文双字节 找个好点的短信发送平台 ASP.NET上传图片问题 请教asp.net中的弹出式窗口 asp.net 如何上传图片之前显示本地绝对路径的图片(续) 反序列化 陕北吴旗娃进来看看:AspNetPager6.0 的 url 重写分页问题 小第初学.net,刚开始就无法进行,郁闷,望大家指点 我如何将用vss管理的.net项目迁移出来,脱离vss的管理? alert 在手机浏览器为什么显示网址,怎么能去掉这个网址 正则式的问题,求助 JS如何给ASP.NET赋值 不允许使用目录 /App_Code/因为已先行编译应用處理??
2、找一个过滤网页标记的方法,包括可能的word标记,然后先过滤掉,再截取。
<%# GetCut(Server.HtmlDecode(Eval("Content").ToString()),150) %>
</p> public string GetCut(object content, int num)
{
if (content.ToString().Length > num - 2)
return content.ToString().Substring(0, num - 2) + "...";
else
return content.ToString();
}
用正则把HTML标记清楚,然后再截取文章的描述信息,并存储
/// <summary>
/// 截取字符串,中文按两个字符处理
/// </summary>
/// <param name="stringToSub"></param>
/// <param name="length"></param>
/// <returns></returns>
public static string GetFirstString(string stringToSub, int length)
{
//Regex regex = new Regex("[\u4e00-\u9fa5]+", RegexOptions.Compiled);匹配汉字
Regex regex = new Regex("[^x00-xff]+", RegexOptions.Compiled);//匹配双字节字符 char[] stringChar = stringToSub.ToCharArray();
StringBuilder sb = new StringBuilder();
int nLength = 0;
bool isCut = false;
for (int i = 0; i < stringChar.Length; i++)
{
if (regex.IsMatch((stringChar[i]).ToString()))
{
sb.Append(stringChar[i]);
nLength += 2;
}
else
{
sb.Append(stringChar[i]);
nLength = nLength + 1;
} if (nLength > length)
{
isCut = true;
break;
}
}
//if (isCut)
//return sb.ToString() + "...";
//else
return sb.ToString();
}中文双字节