我们发布一段文本,这段文本是没有排版分段的,我们按照给他做一下分段处理。
主要要用到的是正则匹配。
原文本:
这段文本是没有排版的,下面我们按照格式为他做一下简单的分段。主要是按照关键字,比如第章、第节,根据正则匹配,匹配到这些关键字,就对这些关键字做前后换行处理,代码如下:
public static void main(String[] args) throws Exception {
// 按指定模式在字符串查找
String line = "第一章引言 第一节 编写目的本文档编写主要提供软件开发中数据库结构的参考,供开发人员了解系统的信息存储结构。本文档的预期阅读人员为软件开发系统项目经理、软件开发人员、项目实施人员和维护人员。第二节范围计算机软件产品开发文件编制指南 ;";
line = chapterFormat(line);
line = numFormat(line);
System.out.println(line);
}
private static String chapterFormat(String line) {
String pattern = "第[一二两三四五六七八九十○零百0-91234567890]{1,12}[编篇章节条]";
Pattern = Pattern.compile(pattern);
// 获取 matcher 对象
Matcher m = p.matcher(line);
StringBuffer sb = new StringBuffer();
while(m.find()){
m.appendReplacement(sb,"\n"+m.group(0)+"\n");
}
m.appendTail(sb);
return sb.toString() ;
}
转化后的格式:
当然,也有可能章节格式,不是按 第章、第节的,比如只有序号 1、 2、 3、 4、,同理的,也是按照正则匹配。
private static String numFormat(String line) {
String pattern = "[一二两三四五六七八九十○零百0-91234567890]{1,12}、";
Pattern p = Pattern.compile(pattern);
// 获取 matcher 对象
Matcher m = p.matcher(line);
StringBuffer sb = new StringBuffer();
while(m.find()){
m.appendReplacement(sb,"\n"+m.group(0));
}
m.appendTail(sb);
return sb.toString() ;
}