日期:2014-05-18  浏览次数:20722 次

关于生成静态分页问题,望高手进来讨论,并指点一二
本人刚毕业踏入社会工作:
近来主管要求做一个静态分页功能
主要是对Web编辑器(FCKedit)编辑的内容进行分页
首先,静态化的要求是按照1KB来分页.
通过分析,知道FCKedit提交到后台处理的数据,其实就是一段字符串
它有个规律就是内容被编辑后会自动嵌入 <p> </p> 这两个标签,找到这个规律后,其实分页就是对字符串中的字符个数来分.
字符串如下: <p> 标题:飞人刘翔再破世界纪录 </p> <p> <table> <tr> 内容省略 <tr> </table> </p>
1KB是如何计算得来?
字符串中: <   或   p   或   标,这些都是一个字符,占计算机的16位,16位   =   2B,那么1KB   =   1024B,1024/2   =   512,也就是说每截取512个字符就可以生成1KB左右的文件,但截取的时候如何呢?
本人是按照如下方法截取:
按照 <p> ... </p> 块来取
按照这种方法取会出现如下情况:
1. <p> .. </p> 之间只取到一半
2.第一个 <p> .. </p> 内容达不到1KB,还要加多一个 <p> .. </p> ,还不够的话继续添加
3.在 <p> 或 </p> 标签中间截开,这种情况有七种,分别例如如下:
3.1   <   与/p> <p>
3.2   </   与p> <p>
3.3   </p   与> <p>
3.4   </p>   与 <p>
3.5 </p> <   与p>
3.6 </p> <p   与>
3.7 </p> <p>
除了这七种情况之外,还有一种就是从非标签中间隔开:
比如: <p> ss   隔开s <p> 或 <p> ss </p> <p> ss   隔开ss </p>

费了很大劲:
编写如下程序实现,贴出来让高手们提提建议,并指点指点晚辈:
package   com.hx.util;

import   java.util.List;
import   java.util.ArrayList;
import   java.util.Iterator;


public   class   Pagination   {
        private   static   final   int   BYTE_CONSTANT   =   13;
        public   Pagination()   {
        }

        public   List   getContents(String   content,   int   KB)   {
                List   contents   =   new   ArrayList();
                //存放截取后的字符串
                String   leaveContent   =   null;
                //临时存放字符串
                String   tmpContent   =   null;
                //计算内容的长度
                int   kb   =   KB   *   BYTE_CONSTANT;
                while   (content.length()   >   0)   {
                        //判断字符串是否被截空
                        if   (content.length()   >   kb)   {
                                //按照所给的大小,截取字符串
                                tmpContent   =   content.substring(0,   kb);
                                //将剩下的字符串临时存放在临时变量中
                                leaveContent   =   content.substring(kb);
                        }   else   {