最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2012年12月04日 16:56:54   作者:  
asp.net(文章截取前幾行作為列表摘要)無損返回HTML代碼,需要的朋友可以參考下

復(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;//返回
        }

相關(guān)文章

  • sqlserver 批量數(shù)據(jù)替換助手V1.0版發(fā)布

    sqlserver 批量數(shù)據(jù)替換助手V1.0版發(fā)布

    前段時間網(wǎng)站被掛馬,數(shù)據(jù)庫表中很多文本字段都被加上了一段js腳本。修復(fù)完程序漏洞之后便開始著手清理這些被注入的數(shù)據(jù),其間參考了一些網(wǎng)上的方法,大都是寫一個存儲過程進行一個表一個表逐一清理。
    2011-10-10
  • .NET?Core中獲取各種路徑的的方法總結(jié)

    .NET?Core中獲取各種路徑的的方法總結(jié)

    在?.NET?Core?開發(fā)過程中,正確處理文件路徑是每個開發(fā)者都會遇到的常見需求,無論是讀取配置文件、寫入日志,還是管理上傳的文件,都需要準(zhǔn)確地獲取各種路徑信息,本文將全面介紹?.NET?Core?中獲取各種路徑的方法,幫助開發(fā)者避免常見的"坑",需要的朋友可以參考下
    2025-04-04
  • IsPostBack原理的介紹

    IsPostBack原理的介紹

    本篇文章,小編將為大家介紹,關(guān)于IsPostBack的原理,有需要的朋友可以參考一下
    2013-04-04
  • 詳解.Net緩存之MemoryCahe

    詳解.Net緩存之MemoryCahe

    這篇文章主要介紹了.Net緩存之MemoryCahe的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用.net技術(shù),感興趣的朋友可以了解下
    2021-05-05
  • 微軟ajax庫的使用方法(ajax.ajaxMethod)

    微軟ajax庫的使用方法(ajax.ajaxMethod)

    使用AjaxMethod可以在客戶端異步調(diào)用服務(wù)端方法,簡單地說就是在JS里調(diào)用后臺.cs文件里的方法,做一些JS無法做到的操作,如查詢數(shù)據(jù)庫
    2013-08-08
  • .net GridView分頁模板的實例代碼

    .net GridView分頁模板的實例代碼

    .net GridView分頁模板的實例代碼,對分頁代碼有興趣的朋友可以參考一下
    2013-03-03
  • asp.net生成驗證碼代碼(純中文)

    asp.net生成驗證碼代碼(純中文)

    下面我來寫一個生成純中文的驗證碼技術(shù),寫一個類庫,需要的朋友可以參考下
    2012-06-06
  • 高效的.Net UDP異步編程實現(xiàn)分析

    高效的.Net UDP異步編程實現(xiàn)分析

    重點是怎么建立一種高效的UDP機制來實時接收服務(wù)器發(fā)送過來的數(shù)據(jù)包.本文將介紹.Net UDP異步編程如何實現(xiàn)解決方案,有需求的朋友可以參考下
    2012-11-11
  • asp.net log4net的使用方法

    asp.net log4net的使用方法

    這篇文章主要介紹了asp.net log4net的使用,需要的朋友可以參考下
    2016-05-05
  • .NET中堆棧和堆的特點與差異介紹

    .NET中堆棧和堆的特點與差異介紹

    這篇文章介紹了.NET中堆棧和堆的特點與差異,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03

最新評論

六盘水市| 澄迈县| 五常市| 佛冈县| 宣汉县| 个旧市| 武鸣县| 高雄县| 安康市| 万宁市| 鄱阳县| 饶阳县| 南投县| 拉孜县| 屯昌县| 湖州市| 昭苏县| 女性| 页游| 枣阳市| 合江县| 克什克腾旗| 青阳县| 介休市| 通江县| 宁海县| 江川县| 武义县| 澄江县| 阿荣旗| 彭山县| 峨山| 炎陵县| 景宁| 襄樊市| 论坛| 仪征市| 平南县| 尼勒克县| 文山县| 喀喇沁旗|