【BG】:这个部分类似一个信息发布系统,通过HTML文本编辑器输入内容,内容包含HTML标签。
【需求】:现在需要在首页的一个模块显示最新的信息,并且需要去掉改变字体的样式、间距等一些HTML标签(先保留<UI><LI>这种)而采用统一的样式,但因有模块大小限制,所以只能显示信息的前8行,然后后面加...。
----------------------------------------------------------
我的想法是这样的:
【1】.先可以考虑去掉 style="",class="",<b>,<i>,<u>,<FONT>... 这种;
【2】.将<hn>,<br>这种要换行的都 换成 <p>;
【3】.根据<p>来换行(另外要考虑一行只能显示40个字符左右;<table>)
     这里有
----------------------------------------------------------
【Q1】要去掉style="",class=""用正则表达式应该如何写? 
   content = System.Text.RegularExpressions.Regex.Replace(content,"","");
【Q2】上面的第三点怎样实现好?
  <div>有个 overflow=hidden 但是不好控制宽度,可能会出现一半的行
【Q3】请问有没有好的方法实现?

解决方案 »

  1.   

    用css的 white-space:nowrap; word-spacing:normal;再加上   overflow:hidden;可满足楼主的要求
      

  2.   

    谢谢几位,
    不过3L的好像不能实现,我想要的是只显示前8行,而且行的宽度已经定死了,不能改变宽度,应该自动换行。
    我说的“可能会出现一半的行”是指字符上半部分显示,而下半部分未显示。
    white-space:nowrap 这样不是一行会很长?
      

  3.   

    1:string rstr=@"[style|class] *= *\"[^\"]*\""
    2:<p>定义样式 width:300px;再按照字节数截取字符串,8×40=320字符
      

  4.   

    换下思路解决会更好。
    /// <summary>
    /// 移除Html标记
    /// </summary>
    /// <param name="content"></param>
    /// <returns></returns>
    public static string RemoveHtml(string content)
    {
    string regexstr = @"<[^>]*>";
    return Regex.Replace(content, regexstr, string.Empty, RegexOptions.IgnoreCase);
    }
      

  5.   

    谢谢5L,
    1.是不是要考虑style class作为单词出现而不是作为HTML标签的属性;
    2.每一行字符数都不同,而且可能还有table就不能简单截取吧
      

  6.   

    先谢谢6L了,
    我要的不是去掉所有的HTML标签,还要保留<hn>、<br>、<p>、<tr>、<li>这样的换行
    另外还要单独考虑<table>一下
      

  7.   

    把(<.*?)\sstyle=".*?"|\sclass=".*?"(.*?>) 替换为 \1\2 好像是可以。
    呃,写的不规范;谁帮我改一下
      

  8.   

    1、先要把你的文本取出html标签,然后直接使用截取就可以了吧
    public static string StripHTML(string strHtml) 

    string [] aryReg ={ 
    @"<script[^>]*?>.*?</script>", @"<(\/\s*)?!?((\w+:)?\w+)(\w+(\s*=?\s*(([""'])(\\[""'tbnr]|[^\7])*?\7|\w+)|.{0})|\s)*?(\/\s*)?>", 
    @"([\r\n])[\s]+", 
    @"&(quot|#34);", 
    @"&(amp|#38);", 
    @"&(lt|#60);", 
    @"&(gt|#62);", 
    @"&(nbsp|#160);", 
    @"&(iexcl|#161);", 
    @"&(cent|#162);", 
    @"&(pound|#163);", 
    @"&(copy|#169);", 
    @"&#(\d+);", 
    @"-->", 
    @"<!--.*\n" 
    }; string [] aryRep = { 
    "", 
    "", 
    "", 
    "\"", 
    "&", 
    "<", 
    ">", 
    " ", 
    "\xa1",//chr(161), 
    "\xa2",//chr(162), 
    "\xa3",//chr(163), 
    "\xa9",//chr(169), 
    "", 
    "\r\n", 
    "" 
    }; string newReg =aryReg[0]; 
    string strOutput=strHtml; 
    for(int i = 0;i<aryReg.Length;i++) 

    System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(aryReg[i],System.Text.RegularExpressions.RegexOptions.IgnoreCase); 
    strOutput = regex.Replace(strOutput,aryRep[i]); 

    strOutput.Replace("<",""); 
    strOutput.Replace(">",""); 
    strOutput.Replace("\r\n",""); 
    return strOutput;