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

一个实用的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;