Txt格式的电子书解析

小编近期参与了一个书城项目负责后台功能的开发,其中有个需求为能够上传Txt格式的电子书并解析出章节标题和章节内容,下面为大家讲讲小编如何实现此需求。
在开始需求分析前,小编要求产品经理提供Txt格式的电子书样例。产品经理给小编两个Txt格式的电子书的样例,下面我们来分析一下这两个Txt格式的电子书,看如何实现上面的需求。
1、Txt格式的电子书格式分析
用记事本打开Txt格式的电子书,如下图所示:
在这里插入图片描述
在这里插入图片描述
从以上两个图片可以看出章节的标题,a书的章节标题应为“第一章:复仇的开始”,b书的章节标题应为“第一章 采访任务”;分析章节标题的特征如下:

  1. 章节标题直接占用Txt文件的一正行;
  2. 章节标题共同的特征为:第×××章 章节名
  3. 两本Txt电子书章节标题的不同点,a书章节标题前含有:空白字符+###+空白字符,章节名前面以“:”分隔;b书包含两个章节标题,第二个章节标题前有空白字符,章节名前以空格分隔;
    以上分析,我们在解析时需要完成如下工作:
  4. 从Txt读取一行数据,分析是否符合章节标题的格式要求;
    章节格式我们用正则表达式来体现:
    (^(\s{0,10})(.{0,10})第)(.{1,9})[章节卷集部篇](.{1,20})($\s*)
    这个正则表达式的大致意思如下:
    在这里插入图片描述
  5. 去除相同章节,如上面b书中“第一章 采访任务”出现了两次,保留一个即可;
  6. 两个章节之前的内容作为章节的正文;
    核心代码如下:
    在这里插入图片描述
    2、Txt格式的电子书编码格式分析
    检查Txt文件的编码格式:用记事本打开文件,点击左上角【文件(F)】后在下拉框中点击【另存为(A)…】在弹出框中可以看到Txt文件的编码格式;
    在这里插入图片描述
    在这里插入图片描述
    从以上两个图片中可以看出a书的编码格式是UTF-8,b书的编码格式的ANSI,两本书的编码格式不同,由此我们知道后续上传的Txt格式电子书会存在这两种编码格式,需要做兼容。
    Txt文件编码与Java中字符串编码的对应关系:
    在这里插入图片描述
    判断Txt文件的编码格式核心代码如下:
    在这里插入图片描述
    解析结果示例
    在这里插入图片描述
    总结:Txt格式电子书的解析重点是章节标题的提取,此点我们用的是正则表达式并简单介绍了我们所使用正则表达式的意思,如果需要深入学习正则表达式的同学,请关注我们的微信公众号,回复“精通正则表达式”获取《精通正则表达式》电子书的下载地址并下载学习。
    在这里插入图片描述