其实在程序读取txt文件进行分页时找出包含“第X章”关键字的页码,保存起来至于章节名称肯定与正文之间有空格,用正则表达式筛选下和页码一起保存。

解决方案 »

  1.   

    txt文件没有包含章节信息, 不太好这样操作, 就算是按关键字提取出来了通用性也不太强, 并且也有可能会统计出错, 对于一些像epub, fb2之类格式的电子书本身就包含了章节信息的或是章节部分有特殊标识的使用这样的处理方法才稳妥一些.
      

  2.   

    LZ做开源的阅读器?有什么用处吗?
    参考下iBook阅读星Android版的功能,有兴趣的话而已给你点实用的建议参考。
      

  3.   

    用正则太消耗性能了 可以java IO流分段读取
      

  4.   

    楼主用正则,第一次记录下章节的位置,不需要分成多个txt。跳转你应该会吧。
    /**
     * Role:智能断章<BR>
     * Date:2012-5-7<BR>
     * 
     * @author ZHENSHI)peijiangping
     */
    private void goToBreakChapter(String str, int num) {
    boolean ok = false;
    Pattern p = Pattern.compile("^[0-9一二三四五六七八九十百千 ]+$");
    String[] key_array = { "章", "回", "节", "卷", "集", "幕", "计" };
    if (str.contains("第")) {
    if (key != null) {
    if (str.contains(key) && str.indexOf(key) > str.indexOf("第")) {
    String a = str.substring(str.indexOf("第") + 1,
    str.indexOf(key));
    Matcher m = p.matcher(a);
    ok = m.matches();
    }
    } else {
    : for (int i = 0; i < key_array.length; i++) {
    key = key_array[i];
    if (str.contains(key)
    && str.indexOf(key) > str.indexOf("第")) {
    String a = str.substring(str.indexOf("第") + 1,
    str.indexOf(key));
    Matcher m = p.matcher(a);
    ok = m.matches();
    if (ok) {
    break ;
    }
    }
    }
    }
    }
    if (ok) {
    ChapterInfo cha = new ChapterInfo();
    cha.setChapter(str);
    endPercent = (float) (num * 1.0 / m_mbBufLen);
    cha.setPercent(endPercent);
    infos.add(cha);
    }
    }
      

  5.   

    按章节分割首先要找到章节与章节之间分隔的特征
    至于是分别存储到不同的文件,还是只将章节信息保存到文件或数据库里都不是难点。
    一楼所说也正是一种章节之间的特征。
    建议你多比较几个TXT小说是怎么排的章节,找出共性
    如果你的TXT都是排版很好的文章,共性就比较好找。
    不然就不说是章节目录,只说是阅读器中的自动分节功能,显示找到可能的章节信息,并可以让用户用滑动条选择阅读进度,保存书签,和在程序打开后自动定位到最后阅读的地方
    再不济也像如下所示了:
    1、第一章:李小龙
    2、第二章:猛张飞
    3、李小龙突然出现在猛张飞面前
    4、第五章:决战
      

  6.   

    可以在程序中内置字库,放在assets/fonts目录下,因该目录下存放单个普通文件大小有限制,不得超过1M,可将字体文件(*.TTF)后缀改为*.mp3,该目录对音视频文件大小无限制。程序默认使用系统字体,若想使用程序内置字体,可使用以下代码进行设置:
                            Typeface tf = Typeface.createFromAsset(getAssets(),  
                                    "fonts/font.mp3");
                            viewfont.setTypeface(tf, Typeface.NORMAL);
    同时还可以设置字体加粗、倾斜等
    viewfont.setTypeface(tf, Typeface.BOLD);//加粗