场景
下载了小说下来,但是使用读书软件打开本地的小说文件,没办法识别其章节。说明这个不符合章节识别的规则。打开小说,可以看到,如图:
本文主要是针对该情况,使用正则表达式将指定的数字提取出来,并进行替换。
环境
软件 | 版本 |
---|---|
JDK | 1.8 |
正文
处理思路
一般,读书软件可以识别的章节名称是 第 XXX 章 章节名称,而本文的样例是 XXX 章节名称,所以这里分为两步:
- 确定正则表达式
- 对每一行进行匹配,匹配上则将提取到的数字拿出来,然后进行替换。
源码
接下来就是展示具体的代码:
public class Test {
public static void main(String[] args) throws IOException {
// 要替换的文本
String filePath = "C:\\Users\\超神机械师.txt";
// 替换之后要保存的路径
String tmpFilePath = "C:\\Users\\超神机械师tmp.txt";
// 读取文件内容
List<String> lines = Files.readAllLines(Paths.get(filePath), Charset.forName("UTF-8"));
// 匹配 开头为数字的行
Pattern pattern = Pattern.compile("^(\\d+)\\s");
List<String> finalLines = new ArrayList<>();
String temp = "";
String newLine = "";
for (String line : lines) {
Matcher matcher = pattern.matcher(line );
newLine = line;
if(matcher.find()){
// 提取数字
temp =matcher.group(1) ;
// 进行替换
newLine = line.replaceFirst(temp, "第" + temp + "章");
}
finalLines.add(newLine);
}
// 输出
Files.write(Paths.get(tmpFilePath), finalLines, Charset.forName("UTF-8"));
}
}
结果
打开生成的文件,查看:
从图片可以知道,我们替换是成功了。将其放到读书软件查看,也是可以看到是正常识别了。
总结
其实很多软件可以做到这一步,不过得专门去下载软件。像我这种,直接执行就可以了。也可以顺便温习一下正则表达式的知识。
随缘求赞
如果我的文章对大家产生了帮忙,可以在文章底部点个赞或者收藏;
如果有好的讨论,可以留言;
如果想继续查看我以后的文章,可以点击关注
可以扫描以下二维码,关注我的公众号:枫夜之求索阁,查看我最新的分享!