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

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

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

復(fù)制代碼 代碼如下:

BR>        /* STRONG>時間很久遠了,有碼友要,我抄了下來,記得使用的時候還是有部分例外情況要處理,大部分是ok的。/STRONG>
        * 函數(shù): 
        * 說明:無損返回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     解決非成對標(biāo)簽

                    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;//記錄當(dāng)前字符及其前面字符

                if (!isHtml)
                {
                    //6     較為準(zhǔn)確的計數(shù)
                    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 == ">")//如果循環(huán)到>時,要處理的成對標(biāo)簽中間部分
                    {
                        if (isHtml)
                        {
                            EndLabel = str.Substring(b, i - b);//獲取到>之間的代碼
                            e = EndLabel.IndexOf(" ");//標(biāo)簽屬性都有空格,以空格為分割,獲取標(biāo)簽名
                            if (e > 0)
                            {
                                EndLabel = "/" + EndLabel.Substring(0, e) + ">";
                            }
                            else
                            {
                                EndLabel = "/" + EndLabel;
                            }
                            AllLabel = EndLabel + AllLabel;//記錄當(dāng)前結(jié)束標(biāo)簽,及所有有關(guān)結(jié)束標(biāo)簽
                        }
                        isHtml = false;//重置屬性,從新開始
                    }
                }
                //4     當(dāng)結(jié)束時,發(fā)現(xiàn)有未閉合的標(biāo)簽,則重新來一次
                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無刷新二級聯(lián)動下拉列表
  • asp.net Ext grid 顯示列表
  • asp.net 自制的單選、多選列表實現(xiàn)代碼
  • asp.net 下拉列表無級數(shù)據(jù)綁定實現(xiàn)代碼
  • asp.net 新聞列表樣式代碼
  • ASP.NET對無序列表批量操作的三種方法小結(jié)
  • ASP.NET系統(tǒng)關(guān)鍵字及保留字列表整理
  • asp.net TreeView與XML三步生成列表樹
  • ASP.NET批量操作基于原生html標(biāo)簽的無序列表的三種方法
  • asp.net新聞列表生成靜態(tài)頁之批量和單頁生成
  • ASP.NET MVC5網(wǎng)站開發(fā)概述(一)
  • ASP.NET MVC5網(wǎng)站開發(fā)項目框架(二)
  • ASP.NET MVC5 網(wǎng)站開發(fā)框架模型、數(shù)據(jù)存儲、業(yè)務(wù)邏輯(三)
  • ASP.NET MVC5網(wǎng)站開發(fā)用戶注冊(四)
  • ASP.NET MVC5網(wǎng)站開發(fā)用戶登錄、注銷(五)
  • ASP.NET MVC5網(wǎng)站開發(fā)用戶修改資料和密碼(六)
  • ASP.NET MVC5網(wǎng)站開發(fā)文章管理架構(gòu)(七)
  • ASP.NET MVC5網(wǎng)站開發(fā)添加文章(八)
  • ASP.NET MVC5網(wǎng)站開發(fā)顯示文章列表(九)

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《asp.net(文章截取前幾行作為列表摘要)無損返回HTML代碼》,本文關(guān)鍵詞  asp.net,文章,截取,前,幾行,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《asp.net(文章截取前幾行作為列表摘要)無損返回HTML代碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于asp.net(文章截取前幾行作為列表摘要)無損返回HTML代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章