用正则表达式生成文章的目录大纲
在做的项目中,经常会牵扯到,对文章的图片处理(把base64的图片保存到服务器上,并转换为服务器的图片链接),和利用h1,h2标签,去生成目录大纲,下面我写了一个工具类,使用正则表达式提取h1,h2标签,为标签赋予id属性,并提取标签内容和id的静态方法。
public class StringUtil {private String content;private String outline;public String getContent() {return content;}public void setContent(String content) {this.content = content;}public String getOutline() {return outline;}public void setOutline(String outline) {this.outline = outline;}/** 生成文章大纲* wmy 15:35 2019/7/5* @Param [source, element]* @return com.raise3d.model.Article**/public static StringUtil generateOutline(String source, String element) {StringUtil article =new StringUtil();if (source != null && source.length() > 0) {List<Map<String, String>> list = new ArrayList<>();String reg = "<"+element+"([\\S\\s]*?)>" + "(.+?)</" + element + ">";Matcher m = Pattern.compile(reg).matcher(source);while (m.find()) {Map<String, String> map = new HashMap<>();String title = m.group(2);//这里我使用的id是使用MD5截取并把数字转换为英文字母String id = MD5.GetMD5Code(title).substring(14, 20);//要求id用全英文字母,html的标签id只需开头是英文字母就okfor (int i = 0; i < id.length(); i++) {if (((int) id.charAt(i)) < 65) {id = id.replace(id.charAt(i), (char) ((int) id.charAt(i) + 65));}}String table = m.group().substring(1, 3);source = source.replaceAll(m.group(), "<"+table+" id=\""+id +"\">"+title+"</"+table+">");map.put("id", id);map.put("title", title);list.add(map);}article.setContent(source);article.setOutline(JSON.toJSONString(list));} else {article.setContent(null);article.setOutline(null);}return article;} }
测试用例:
public class Test {public static void main(String[] args) throws InterruptedException {String content = "<p>asdggasdhfh</p><h1 class=\"qqsbfw\" id=\"yqcrrx\">AAAAAAAAAAAAAAsAAAAA</h1><p>GGGGGGGGGGGGGGGGGGGGGGGGGGGGG</p><h2 class=\"tbtwra\" id=\"tbtwra\">FFFFFFFFFFFFFFFFFFFFFFFFFFFFF</h2><p>DDDDDDDDDDDDDDDDDDDDDDD</p><h1 class=\"qbyftd\" id=\"qbyftd\">SSSSSSSSSSSSSSSSSSSSSSSS</h1><p>HHHHHHHHHHHHHHHHHHHHHHHHHH</p><h2 id=\"zfeerf\" id=\"zfeerf\">JJJJJJJJJJJJJJJJJJJ</h2><p>KKKKKKKKKKKKKKKKKKKK</p><p>LLLLLLLLLLLLLLLLLLLLLL</p>";StringUtil article = StringUtil.generateOutline(content, "h[1-2]");System.out.println(article.getContent());System.out.println(article.getOutline());} }
测试结果:
<p>asdggasdhfh</p><h1 id="yqcrrx">AAAAAAAAAAAAAAsAAAAA</h1><p>GGGGGGGGGGGGGGGGGGGGGGGGGGGGG</p><h2 id="tbtwra">FFFFFFFFFFFFFFFFFFFFFFFFFFFFF</h2><p>DDDDDDDDDDDDDDDDDDDDDDD</p><h1 id="qbyftd">SSSSSSSSSSSSSSSSSSSSSSSS</h1><p>HHHHHHHHHHHHHHHHHHHHHHHHHH</p><h2 id="zfeerf">JJJJJJJJJJJJJJJJJJJ</h2><p>KKKKKKKKKKKKKKKKKKKK</p><p>LLLLLLLLLLLLLLLLLLLLLL</p>
[{"id":"yqcrrx","title":"AAAAAAAAAAAAAAsAAAAA"},{"id":"tbtwra","title":"FFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},{"id":"qbyftd","title":"SSSSSSSSSSSSSSSSSSSSSSSS"},{"id":"zfeerf","title":"JJJJJJJJJJJJJJJJJJJ"}]
转载于:https://www.cnblogs.com/mingyuan1031/p/11307326.html
用正则表达式生成文章的目录大纲相关推荐
- 简单的生成文章内容目录(vue可用)
在富文本辑编器里面写文章时,我们通常会使用h1-h6标签来定义章节标题.在用户端显示时希望展示目录结构.如图: 这里生成目录结构可以借助第三方插件来实现,但某些情况下不希望引用太多的第三方资源就需要自 ...
- hexo嵌入html传消息的,Hexo添加Toc支持,生成文章目录
Hexo提供了诸多插件来增强博客体验,地址http://hexo.io/plugins/. 在博客搬迁的时发现一个生成文章目录的插件,hexo-toc. hexo-toc为防插件误认标记,文章以下出现 ...
- 根据文章中H标签自动生成文章目录
以前看到csdn上的目录结构就想把它移植到博客里,今天抽了个空从csdn上拔下了代码. js代码,复制放入到single.php页面中 <script type="text/javas ...
- 如何在 Word 中使用自定义样式生成文章目录
如何在 Word 中使用自定义样式生成文章目录 概要 本文介绍如何在 Microsoft Word 2002 和 Microsoft Office Word 2003 中使用自定义样式创建目录.在 W ...
- 帝国cms怎样自动生成文章目录?
百度蜘蛛是比较喜欢文章目录的,毕竟,带目录的文章明显条理更为清晰.而从用户的角度,查看的文章带目录也可以更快的定位到自己需要的信息. 就比如说,一篇技术文章可能会讲到前因后果,但你很着急,只需要知道解 ...
- 《繁凡的深度学习笔记》前言、目录大纲 一文让你完全弄懂深度学习所有基础(DL笔记整理系列)
<繁凡的深度学习笔记>前言.目录大纲 (DL笔记整理系列) 一文弄懂深度学习所有基础 ! 3043331995@qq.com https://fanfansann.blog.csdn.ne ...
- 自动生成文章的html,文章自动更新工具|自动生成文件|自动伪原创|文章自动插入关键词工具...
概念网络发布一款自动更新文章的工具, 该套工具可用概念的文章站程序, 概念的发布站程序, 概念的企业站程序, 只要在服务器一直开着这个工具, 工具会更具配置文件的配置, 每天定时的更新网站的文章, 文 ...
- Diango博客--7.自动生成文章摘要
文章目录 0.思路引导 1.方法一:覆写 save 方法 2.方法二:使用 truncatechars 模板过滤器 0.思路引导 博客文章的模型有一个 excerpt 字段,这个字段用于存储文章的摘要 ...
- 自动填充html_第 11 篇:自动生成文章摘要
作者:HelloGitHub-追梦人物 文中涉及的示例代码,已同步更新到 [HelloGitHub-Team 仓库](https://github.com/HelloGitHub-Team/Hello ...
- 个人博客网站文章添加目录导航
文章出自个人博客https://knightyun.github.io/2020/01/14/website-add-category,转载请申明 概述 之前有写文章探索如何给个人博客网站添加文章搜索 ...
最新文章
- 能带曲线图绘制python_如何使用python的matplotlib模块画折线图
- 从VirtualBox虚拟主机访问NAT客户机的方法
- AVL树平衡旋转详解
- P3225 [HNOI2012]矿场搭建 割点 tarjan 双联通分量
- 服务器返回一个无效的JSON string,处理
- hdu 5783——Divide the Sequence
- web中间件_常见web中间件拿shell
- 沃尔什哈达玛变换Matlab,哈达玛变换矩阵-数字图像处理.ppt
- js时间格式化函数(兼容IOS)
- nohup命令简单的使用
- wifi信号衰减与距离关系_WIFI信号的空间如何衰减 WIFI信号的空间衰减介绍【详解】...
- Faceted project metadata file /.settings/org.eclipse.wst.common.project.facet.core.xml could
- 仿照中国银行页面进行编写,主要涉及到float,定位
- 点击图片放大缩小功能
- md 文件使用html阅读,使用markdow-it渲染md文件为html页面
- cocos2d-x 添加自定义字体---中文,英文
- 同济高等数学第三章之经典错误知识点笔记
- RHCE for RHEL6認證考試簡介
- python win32 excel转pdf
- 室内定位导航系统设计实现指南