我要添加新闻的时候 要刷新gridview,并且在gridview的内容列要显示内容的前10个字 超过的部分用代替。我编辑内容用的是FCK编辑器。要是第一个字就是插入图片或者标签的话 gridview显示前十个字就会变成空白,不好看。我想既显示前十个字又想前面能过滤掉那些标签改怎么做。分开我会 整合我就不行了。
用代替超长字符 /// <summary>
    /// 新闻内容用代替超长字符
    /// </summary>
    /// <param name="sString"></param>
    /// <param name="nLeng"></param>
    /// <returns></returns>
    public string SubStr(string sString, int nLeng)
    {
        if (sString.Length <= nLeng)
        {
            return sString;
        }
        string sNewStr = sString.Substring(0, nLeng);
        sNewStr = sNewStr + "...";
        return sNewStr;
    }过滤标签  string str = Regex.Replace(内容, @"[^\u4e00-\u9fa5\uFF00-\uFFFF]+", "");        string content = this.SubStr(str, 130);
界面gridview内显示
Text='<%# this.SubStr(Convert.ToString(Eval("content")),10) %>'>
我想跟过滤标签的2个一起结合起来不知道行不行 自己试了下,错了。求解 

解决方案 »

  1.   

    Regex.Replace(str,@"<[^> ]+>","");
    过滤所有html
      

  2.   

     #region 过滤掉 html代码
            /// <summary>
            /// 过滤html标签
            /// </summary>
            /// <param name="strHtml">html的内容</param>
            /// <returns></returns>
            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 = strOutput.Replace("\r\n", "");
                return strOutput;
            }
            #endregion