一个实用的html标题的截取指定长度的问题
文章标题如下:
<span style=color:red> 截取指定长度的问题 </span>
或
<span style= "color:red "> 截取指定长度的问题 </span>
或
<font color=red> 截取指定长度的问题 </font>
或
<font color= 'red '> <b> 截取指定长度的问题 <b> </font>
一类的简单html代码
要求达到截取一定长度的目的,如截取4个字就是
<span style=color:red> 截取指定... </span> 一类的结果。
截取6个字就是
<span style=color:red> 截取指定长度... </span> 一类的结果。
谁做过这方面的尝试吗?效果有理想的吗?
------解决方案--------------------style= "OVERFLOW: hidden; WORD-BREAK: keep-all; TEXT-OVERFLOW: ellipsis;width:40px "
指定里面的宽度就可以
------解决方案--------------------string yourStr = richTextBox1.Text;
string resultStr = " ";
string sub1 = Regex.Replace(yourStr, @ " <[\s\S]*?> (?![^ <> ]*?> ) ", " ");
if(sub1.Length> 6)
{
string sub2 = sub1.Substring(0,6);
resultStr = yourStr.Replace(sub1,sub2+ "... ");
}
else
{
resultStr = yourStr;
}
richTextBox2.Text = resultStr;
用上面的程序,可以处理楼主所给所有例子,超过6个字截取,少于6个字保留原样
但是问题仍然存在,比如楼主所给的例子
<font color= 'red ' onclick= "javascript:if(2> 1){alert( '2> 1 ')} "> 我是标题 </font>
如果改成
<font color= 'red ' onclick= "javascript:if(2> 1){alert( 'a <b ')} "> 我是标题 </font>
那就无法处理了,程序毕竟不如人智能,除非能保证标题遵守一定的规则,比如说都是汉字,那样还可以处理
-----------------------
一家之言,有不对的地方还请指正
------解决方案--------------------String CutTitle(String str,int num)
{
//先把 "**** <> <> title <> <> "中的 "**** "去除,得到 " <> <> title <> <> "格式
String tempStr=str.subString(0,str.IndexOf( " < "));
str=str.subString(str.IndexOf( " < "));
//通过循环找到title
while(str.subStirng(0,1)== " < ")
{
tempStr=tempStr+str.subString(0,str.IndexOf( "> ")+1);
str=str.subString(Str.IndexOf( "> ")+1);
}
//找到了title,CUT掉多余的部分
String title=str.subString(0,str.IndexOf( " < ");
if(title.length> num)
title=title.subString(0,num);
tempStr=tempStr+title;
//把title后面的 <> <> 加到tempStr;
str=str.subString(0,str.IndexOf( " < ");
tempStr=tempStr+str;
return tempStr;
}
------解决方案--------------------像这种处理我做过,不过可能会麻烦点
步骤:
1.写一个方法public string GetTag(string strTag);
这个方法得到一个html 文档里的所有 strTag的标记。
如strTag=“span”: <span style= "width:150px "> 内容 </span>
2.再写一个方法得到标记内的InnerHTML(里面可能还有其它的标记见3),这样就可以得到标记内的内容了。
3.如果标记内还有其它标记再进行1
http://www.cnblogs.com/HeroBeast/archive/2007/02/25/656360.html
这是我写的一个小工具。里面有这样的处理。
------解决方案--------------------public string HtmlSubstring(string AHtml, int ALength)
{
string vReturn = " ";
int vLength = 0; // 增加的文字长度
int vFlag = 0; // 当前扫描的区域0:普通区1:标记区
foreach (char vChar in AHtml)
{
switch (vFlag)
{
case 0: // 普通区
if (vChar == ' < ')
{
vReturn += vChar;