本人正在做一个电子书阅读器,想知道如何实现按章节分割大的txt文件 其实在程序读取txt文件进行分页时找出包含“第X章”关键字的页码,保存起来至于章节名称肯定与正文之间有空格,用正则表达式筛选下和页码一起保存。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 txt文件没有包含章节信息, 不太好这样操作, 就算是按关键字提取出来了通用性也不太强, 并且也有可能会统计出错, 对于一些像epub, fb2之类格式的电子书本身就包含了章节信息的或是章节部分有特殊标识的使用这样的处理方法才稳妥一些. LZ做开源的阅读器?有什么用处吗?参考下iBook阅读星Android版的功能,有兴趣的话而已给你点实用的建议参考。 用正则太消耗性能了 可以java IO流分段读取 楼主用正则,第一次记录下章节的位置,不需要分成多个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); } } 按章节分割首先要找到章节与章节之间分隔的特征至于是分别存储到不同的文件,还是只将章节信息保存到文件或数据库里都不是难点。一楼所说也正是一种章节之间的特征。建议你多比较几个TXT小说是怎么排的章节,找出共性如果你的TXT都是排版很好的文章,共性就比较好找。不然就不说是章节目录,只说是阅读器中的自动分节功能,显示找到可能的章节信息,并可以让用户用滑动条选择阅读进度,保存书签,和在程序打开后自动定位到最后阅读的地方再不济也像如下所示了:1、第一章:李小龙2、第二章:猛张飞3、李小龙突然出现在猛张飞面前4、第五章:决战 可以在程序中内置字库,放在assets/fonts目录下,因该目录下存放单个普通文件大小有限制,不得超过1M,可将字体文件(*.TTF)后缀改为*.mp3,该目录对音视频文件大小无限制。程序默认使用系统字体,若想使用程序内置字体,可使用以下代码进行设置: Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/font.mp3"); viewfont.setTypeface(tf, Typeface.NORMAL);同时还可以设置字体加粗、倾斜等viewfont.setTypeface(tf, Typeface.BOLD);//加粗 ImageButton中src和background区别 求助:关于Android新增日历控件的使用 大项目如何架构(驾驭)UI和逻辑? 3d旋转旋转问题 请问下如何获取桌面及使用其他软件的触摸点轨迹. 应用崩溃重启之后,savedInstanceState应用状态保存问题 安卓集成开发环境adt错误提示,新手勿怪 安卓界面,求助 myeclipse 8.6安装adt 23后始终认不出sdk 23的开发环境 android发送post请求问题 android起来后,串口不能进入shell android 实现背景拖动(布局和动画的结合)
参考下iBook阅读星Android版的功能,有兴趣的话而已给你点实用的建议参考。
/**
* 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);
}
}
至于是分别存储到不同的文件,还是只将章节信息保存到文件或数据库里都不是难点。
一楼所说也正是一种章节之间的特征。
建议你多比较几个TXT小说是怎么排的章节,找出共性
如果你的TXT都是排版很好的文章,共性就比较好找。
不然就不说是章节目录,只说是阅读器中的自动分节功能,显示找到可能的章节信息,并可以让用户用滑动条选择阅读进度,保存书签,和在程序打开后自动定位到最后阅读的地方
再不济也像如下所示了:
1、第一章:李小龙
2、第二章:猛张飞
3、李小龙突然出现在猛张飞面前
4、第五章:决战
Typeface tf = Typeface.createFromAsset(getAssets(),
"fonts/font.mp3");
viewfont.setTypeface(tf, Typeface.NORMAL);
同时还可以设置字体加粗、倾斜等
viewfont.setTypeface(tf, Typeface.BOLD);//加粗