校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > asp.net(文章截取前幾行作為列表摘要)無損返回HTML代碼

asp.net(文章截取前幾行作為列表摘要)無損返回HTML代碼

熱門標簽:使用智能電話機器人違法嗎 淘寶地圖標注如何做 太原外呼電銷機器人費用 朝陽市地圖標注 東莞語音電銷機器人排名 外呼系統用員工身份證 保山電話外呼管理系統怎么用 電話機器人廣告話術 蘇州銷售外呼系統預算

復制代碼 代碼如下:

BR>        /* STRONG>時間很久遠了,有碼友要,我抄了下來,記得使用的時候還是有部分例外情況要處理,大部分是ok的。/STRONG>
        * 函數: 
        * 說明:無損返回HTML代碼
        *      
        * 作者:卡斯Kas(QQ:10590916)
        * 修改:2010-12-13、
        */

        public static string LeftH(string str, int l)
        {
            //為了防止錯誤
            string odstr = str;
            bool isHtml = false;//判斷截取開頭是否是字符串
            int maxLen = str.Length;
            int n = 0, i = 0, b = 0, e = 0;
            string c, c2 = "", Start = "", EndLabel = "", AllLabel = "";
            if (l >= str.Length) return str;//截取字段大于字符長度

            bool isErr = false;
            try
            {
            while (n l i maxLen)
            {
                //1
                i++;
                c = str.Substring(i - 1, 1);

                string end2str = "";
                try
                {
                    end2str = str.Substring(i - 1, 2);
                }
                catch
                {
                    end2str = "";
                }
                if (c == "" end2str != "/")
                {
                    isHtml = true;
                    b = i;//記錄一個位置
                    //5     解決非成對標簽

                    string end2tag = "";
                    try
                    {
                        end2tag = str.Substring(i, 2);
                    }
                    catch
                    {
                        end2tag = "";
                    }

                    if (end2tag == "br")
                    {
                        isHtml = false;
                    }
                    if (str.Substring(i, 1).ToLower() == "%")
                    {
                        isHtml = false;
                    }
                    if (str.Substring(i, 1).ToLower() == "?")
                    {
                        isHtml = false;
                    }
                    else if (end2tag == "hr")
                    {
                        isHtml = false;
                    }
                    //5end
                }
                //1end

                //2
                if (c == "" end2str == "/")
                {
                    c2 = str.Substring(i - 1, str.Substring(i - 1).IndexOf(">") + 1);
                    AllLabel = AllLabel.Substring(c2.Length);
                }
                //2end

                Start = Start + c;//記錄當前字符及其前面字符

                if (!isHtml)
                {
                    //6     較為準確的計數
                    try
                    {
                        if (str.Substring(i, 2).ToLower() == "br")
                        {
                        }
                        else if (str.Substring(i, 2).ToLower() == "hr")
                        {
                        }
                        else
                        {
                            n++;
                        }
                    }
                    catch
                    {
                        //如果出錯,則返回純文本(@"[^>]+>|/[^>]+>");
                        //odstr = Regex.Replace(odstr, @"[^>]+>|/[^>]+>", "", RegexOptions.IgnoreCase);
                        odstr = odstr.Replace("", "").Replace(">", ">");
                        if (l > odstr.Length) l = odstr.Length;
                        return odstr.Substring(0, l);
                    }
                    //6end
                }
                else
                {
                    if (c == ">")//如果循環到>時,要處理的成對標簽中間部分
                    {
                        if (isHtml)
                        {
                            EndLabel = str.Substring(b, i - b);//獲取到>之間的代碼
                            e = EndLabel.IndexOf(" ");//標簽屬性都有空格,以空格為分割,獲取標簽名
                            if (e > 0)
                            {
                                EndLabel = "/" + EndLabel.Substring(0, e) + ">";
                            }
                            else
                            {
                                EndLabel = "/" + EndLabel;
                            }
                            AllLabel = EndLabel + AllLabel;//記錄當前結束標簽,及所有有關結束標簽
                        }
                        isHtml = false;//重置屬性,從新開始
                    }
                }
                //4     當結束時,發現有未閉合的標簽,則重新來一次
                if (n + 1 >= l)
                {
                    if (InStrN(Start, "") != InStrN(Start, ">"))
                    {
                        n--;
                    }
                }
                //4end
            }//end while

            }
            catch
            {
                isErr = true;
            }

            string newReString = Start + AllLabel + "...";

            //最后再次驗證
            Regex Rg = new Regex(".[^>/]+>", RegexOptions.Compiled);
            Regex Rg2 = new Regex(@"\s*/[a-z]\s*>", RegexOptions.Compiled);

            if (inStrLen(newReString, "") != inStrLen(newReString, ">"))
            {
                isErr = true;
            }
            else if (inStrLen(newReString.Replace(""", "\""), "\"") % 2 == 1)
            {
                isErr = true;
            }
            else if (Rg.Matches(newReString).Count != Rg2.Matches(newReString).Count)
            {
                isErr = true;
            }
            if (isErr)
            {
                odstr = odstr.Replace("", "").Replace(">", ">").Replace("\"", """).Replace("'", "'");
                if (l > odstr.Length)
                { newReString = odstr; }
                else
                {
                    try
                    {
                        newReString = odstr.Substring(0, l) + "...";
                    }
                    catch
                    {
                        newReString = odstr;
                    }
                }
            }

            return newReString;//返回
        }

您可能感興趣的文章:
  • 適用與firefox ASP.NET無刷新二級聯動下拉列表
  • asp.net Ext grid 顯示列表
  • asp.net 自制的單選、多選列表實現代碼
  • asp.net 下拉列表無級數據綁定實現代碼
  • asp.net 新聞列表樣式代碼
  • ASP.NET對無序列表批量操作的三種方法小結
  • ASP.NET系統關鍵字及保留字列表整理
  • asp.net TreeView與XML三步生成列表樹
  • ASP.NET批量操作基于原生html標簽的無序列表的三種方法
  • asp.net新聞列表生成靜態頁之批量和單頁生成
  • ASP.NET MVC5網站開發概述(一)
  • ASP.NET MVC5網站開發項目框架(二)
  • ASP.NET MVC5 網站開發框架模型、數據存儲、業務邏輯(三)
  • ASP.NET MVC5網站開發用戶注冊(四)
  • ASP.NET MVC5網站開發用戶登錄、注銷(五)
  • ASP.NET MVC5網站開發用戶修改資料和密碼(六)
  • ASP.NET MVC5網站開發文章管理架構(七)
  • ASP.NET MVC5網站開發添加文章(八)
  • ASP.NET MVC5網站開發顯示文章列表(九)

標簽:克拉瑪依 呼倫貝爾 運城 綏化 洛陽 西藏 潛江 阿里

巨人網絡通訊聲明:本文標題《asp.net(文章截取前幾行作為列表摘要)無損返回HTML代碼》,本文關鍵詞  asp.net,文章,截取,前,幾行,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《asp.net(文章截取前幾行作為列表摘要)無損返回HTML代碼》相關的同類信息!
  • 本頁收集關于asp.net(文章截取前幾行作為列表摘要)無損返回HTML代碼的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 灵山县| 泾源县| 云南省| 广德县| 息烽县| 江孜县| 平原县| 灵石县| 高青县| 灵璧县| 嘉定区| 诸暨市| 永靖县| 双鸭山市| 开江县| 建水县| 北宁市| 绥宁县| 岐山县| 凤台县| 双鸭山市| 家居| 武冈市| 昭平县| 通许县| 金坛市| 沧源| 花莲县| 阿克| 常州市| 永州市| 西贡区| 陆丰市| 长治市| 万载县| 小金县| 许昌县| 双桥区| 奉节县| 亳州市| 黎川县|