编程联盟 专业定做出售asp.net毕业设计毕业论文
频道导航.NET数据库Java网络编程语言WEB开发重点导航最新编程资料热门编程文章编程工具大集合下载精品电子书教程下载
出售asp.net毕业设计 出售asp.net毕业设计 出售asp.net毕业设计 出售asp.net毕业设计
首页>>开发资料>>ASp.net>> 如何实现HTML标记的内容分页完整代码

如何实现HTML标记的内容分页完整代码增强型1G空间特价350元!

点击:5503
发布时间:2009-3-20 0:00:00
作者: 本站整理
来源: 互联网


进入社区讨论   定做出售计算机毕业论文 asp.net毕业设计网

咨询毕业设计请点击我

如何实现HTML标记的内容分页完整代码大家看看这个东西对你有没帮助

调用ArrayList arrlt=ContentPage.GetPageContent("分页内容", 分页大小,true);

 

  1using System;
  2using System.Text;
  3using System.Collections;
  4using System.Text.RegularExpressions;
  5
  6    /// <summary>
  7    /// 内容分页 v0.1.2     gxian22@163.com 
  8    /// </summary>

  9public class ContentPage
 10{
 11    /// <summary>
 12    /// 内容分页
 13    /// </summary>
 14    /// <param name="strContent">要分页的字符串内容</param>
 15    /// <param name="intPageSize">分页大小</param>
 16    /// <param name="isOpen">最后一页字符小于intPageSize的1/4加到上一页</param>
 17    /// <returns></returns>

 18    public static ArrayList GetPageContent(string strContent, int intPageSize, bool isOpen)
 19    {
 20        ArrayList arrlist = new ArrayList();
 21        string strp = strContent;
 22        int num = RemoveHtml(strp.ToString()).Length;//除html标记后的字符长度
 23        int bp = (intPageSize + (intPageSize / 5));
 24
 25        for (int i = 0; i < ((num % bp == 0? (num / bp) : ((num / bp) + 1)); i++)
 26        {
 27            arrlist.Add(SubString(intPageSize, ref strp));
 28            num = RemoveHtml(strp.ToString()).Length;
 29            if (isOpen && num < (intPageSize / 4))
 30            // 小于分页1/4字符加到上一页
 31                arrlist[arrlist.Count - 1= arrlist[arrlist.Count - 1+ strp;
 32                strp = "";
 33            }

 34            i = 0;
 35        }

 36        if (strp.Length > 0) arrlist.Add(strp); //大于1/4字符 小于intPageSize 
 37
 38        return arrlist;
 39    }

 40
 41    /// <summary>
 42    /// &lt; 符号搜索
 43    /// </summary>
 44    /// <param name="cr"></param>
 45    /// <returns></returns>

 46    private static bool IsBegin(char cr)
 47    {
 48        return cr.Equals('<');
 49    }

 50
 51    /// <summary>
 52    /// &gt; 符号搜索
 53    /// </summary>
 54    /// <param name="cr"></param>
 55    /// <returns></returns>

 56    private static bool IsEnd(char cr)
 57    {
 58        return cr.Equals('>');
 59    }

 60
 61    /// <summary>
 62    /// 截取分页内容
 63    /// </summary>
 64    /// <param name="index">每页字符长度</param>
 65    /// <param name="str"></param>
 66    /// <returns></returns>

 67    private static string SubString(int index, ref string str)
 68    {
 69        ArrayList arrlistB = new ArrayList();
 70        ArrayList arrlistE = new ArrayList();
 71        string strTag = "";
 72        char strend = '0';
 73        bool isBg = false;
 74        bool IsSuEndTag = false;
 75
 76        index = Gindex(str, index);
 77        string substr = CutString(str, 0, index); //截取分页长度
 78        string substr1 = CutString(str, index, str.Length - substr.Length); //剩余字符
 79        int iof = substr.LastIndexOf("<"), iof1 = 0;
 80
 81        防止标记截断
113
114        //分析截取字符内容提取标记
115        foreach (char cr in substr)
116        {
117            if (IsBegin(cr)) isBg = true;
118            if (isBg) strTag += cr;
119
120            if (isBg && cr.Equals('/'&& strend.Equals('<')) IsSuEndTag = true;
121
122            if (IsEnd(cr))
123            {
124                if (strend.Equals('/')) //跳出 <XX />标记
125                {
126                    isBg = false;
127                    IsSuEndTag = false;
128                    strTag = "";
129                }

130
131                if (isBg)
132                {
133                    if (!CutString(strTag.ToLower(), 03).Equals("<br"))
134                    {
135                        if (IsSuEndTag)
136                            arrlistE.Add(strTag); //结束标记
137                        else
138                            arrlistB.Add(strTag); //开始标记
139                    }

140                    IsSuEndTag = false;
141                    strTag = "";
142                    isBg = false;
143                }

144            }

145            strend = cr;
146        }

147
148        //找到未关闭标记
149        for (int b = 0; b < arrlistB.Count; b++)
150        {
151            for (int e = 0; e < arrlistE.Count; e++)
152            {
153                string strb = arrlistB[b].ToString().ToLower();
154                int num = strb.IndexOf(' ');
155                if (num > 0) strb = CutString(strb, 0, num) + ">";
156                if (strb.ToLower().Replace("<""</").Equals(arrlistE[e].ToString().ToLower()))
157                {
158                    arrlistB.RemoveAt(b);
159                    arrlistE.RemoveAt(e);
160                    b = -1;
161                    break;
162                }

163            }

164        }

165
166        //关闭被截断标记
167        for (int i = arrlistB.Count; i > 0; i--)
168        {
169            string stral = arrlistB[i - 1].ToString();
170            substr += (stral.IndexOf(" "== -1 ? stral.Replace(">""/>") : CutString(stral, 0, stral.IndexOf(" ")) + "/>");
171        }

172        //补全上页截断的标签
173        string strtag = "";
174        for (int i = 0; i < arrlistB.Count; i++) strtag += arrlistB[i].ToString();
175
176        str = strtag + substr1; //更改原始字符串
177        return substr; //返回截取内容
178    }

179
180    /// <summary>
181    /// 返回真实字符长度
182    /// </summary>
183    /// <param name="str"></param>
184    /// <param name="index"></param>
185    /// <returns></returns>

186    private static int Gindex(string str, int index)
187    {
188        bool isBg = false;
189        bool isSuEndTag = false;
190        bool isNbsp = false, isRnbsp = false; ;
191        string strnbsp = "";
192        int i = 0, c = 0;
193        foreach (char cr in str)
194        {
195            if (!isBg && IsBegin(cr)) { isBg = true; isSuEndTag = false; }
196            if (isBg && IsEnd(cr)) { isBg = false; isSuEndTag = true; }
197            if (isSuEndTag && !isBg)
198            //不在html标记内
199                if (cr.Equals('&')) isNbsp = true;
200                if (isNbsp)
201                {
202                    strnbsp += cr.ToString();
203                    if (strnbsp.Length > 6{ isNbsp = false; strnbsp = ""; }
204                    if (cr.Equals(';')) isNbsp = false;//
205                }

206                if (!isNbsp && !"".Equals(strnbsp)) isRnbsp = strnbsp.ToLower().Equals("&nbsp;");
207            }

208
209            if (isSuEndTag && !cr.Equals('\n'&& !cr.Equals('\r'&& !cr.Equals(' ')) c++;
210            if (isRnbsp) { c = c - 6; isRnbsp = false; strnbsp = "";  }
211
212            i++;
213
214            if (c == index) return i;
215        }

216        return i;
217    }

218
219    /// <summary>
220    /// 移除Html标记
221    /// </summary>
222    /// <param name="content"></param>
223    /// <returns></returns>

224    public static string RemoveHtml(string content)
225    {
226        content = Regex.Replace(content, @"<[^>]*>"string.Empty, RegexOptions.IgnoreCase);
227        return Regex.Replace(content, "&nbsp;"string.Empty, RegexOptions.IgnoreCase);
228    }

229
230    /// <summary>
231    /// 从字符串的指定位置截取指定长度的子字符串
232    /// </summary>
233    /// <param name="str">原字符串</param>
234    /// <param name="startIndex">子字符串的起始位置</param>
235    /// <param name="length">子字符串的长度</param>
236    /// <returns>子字符串</returns>

237    public static string CutString(string str, int startIndex, int length)
238    {
239        if (startIndex >= 0)
240        {
241            if (length < 0)
242            {
243                length = length * -1;
244                if (startIndex - length < 0)
245                {
246                    length = startIndex;
247                    startIndex = 0;
248                }

249                else
250                {
251                    startIndex = startIndex - length;
252                }

253            }

254
255            if (startIndex > str.Length) return "";
256
257        }

258        else
259        {
260            if (length < 0)
261            {
262                return "";
263            }

264            else
265            {
266                if (length + startIndex > 0)
267                {
268                    length = length + startIndex;
269                    startIndex = 0;
270                }

271                else
272                {
273                    return "";
274                }

275            }

276        }

277
278        if (str.Length - startIndex < length) length = str.Length - startIndex;
279        try
280        {
281            return str.Substring(startIndex, length);
282        }

283        catch
284        {
285            return str;
286        }

287    }

288}

289

 

转载请注明出处:http://www.cnblogs.com/cn795

文章来源:http://www.bcbbs.net/news/Content.aspx?id=40117
文章来源:http://www.bcbbs.net/news/Content.aspx?id=40117
asp.net毕业设计定做出售 asp.net毕业论文
收藏本文章 关闭本页
编程联盟 | 编程论坛 | 关于本站 | 站点地图 | 友情链接 | 联系我们|版权声明|购买本站广告
Powered by 编程联盟 2007-2010 bcbbs.net冀ICP备08005404号
空间赞助商:北京易德科技有限公司
编程联盟群:群1【39111008】 群2【60142030】群三【83882594】群四【62585405】群五【37260303】群六【32771492】群七【85894797】群八【42624779】欢迎讨论技术