日期:2014-05-17  浏览次数:20517 次

关于包含html标签的字符串截取问题
比如下面的这个字符串:

string str = @="
从这里开始截取吧
<img src='aaa.jpg' width='30'/>
<br/>
张三李四王五赵六,截得我蛋疼啊
<img src='bbb.jpg' width='30'/>
<br/>
周七王八吴九郑十,咯噔咯噔的疼啊
<div style='border:1px solid red'>啦啦啦啦啦啦啦啦啦啦啦</div>";

现在要把这个字符串按照指定的长度切割得到一字符串个数组,比如按照4个长度一割的话,得到的数组如下:
第一个元素:从这里开
第二个元素:始截取吧
第三个元素:张三李四
......


其实如果就是上面这个的话就比较简单了.可是关键的是这个字符串里面包含HTML标签,都知道HTML标签是要闭合的,如果在标签还没结束的时候就被截断了,那这个字符串就没有用了.所以标签不能断.
要求是:标签如果被截断了的话,就一直截取到标签闭合为止,我正则很水的,有没有大锅有可靠的个人收藏,拿出来分享下啊


------解决方案--------------------
你要的结果中并没有标签啊
------解决方案--------------------
/// <summary>
/// 移除HTML标签
/// </summary>
/// <returns></returns>
public static string RemoveHTML(string htmlStr)
{
return System.Text.RegularExpressions.Regex.Replace(htmlStr, "<[^>]*>", "");
}

/// <summary>
/// 中英文截取字符串类
/// </summary>
/// <param name="strinput"></param>
/// <param name="strlen"></param>
/// <returns></returns>
public static string CutString(string strinput, int strlen)
{
strinput = strinput.Trim();
Byte[] mybyte = System.Text.Encoding.Default.GetBytes(strinput);
if (mybyte.Length > strlen)
{
String resultstr = "";
for (int i = 0; i <= strinput.Length; i++)
{
Byte[] tempByte = System.Text.Encoding.Default.GetBytes(resultstr);
if (tempByte.Length < strlen)
{ resultstr += strinput.Substring(i, 1); }
else
{ break; }
}
return resultstr + "...";
}
else
{
return strinput;
}
}
------解决方案--------------------
先过滤html标签,再截取!
------解决方案--------------------
数据在数据库存放,想怎么用就怎么用!