markdown这么受欢迎,我自定义一些语法并实现解析
前言
前面我们分别介绍了文件的IO、接口的调用。这些都是针对客户使用的方面解析的,今天我们来说一个和我们程序员息息相关的模块 markdown
什么是markdown
markdown是什么,这个问题谷歌一下就好啦~~~是一种轻量级的标记语言,常用与文章排版~
用这种标记语言可以非常方便的排版文章以及各大平台的适配,而且沉浸式的写作体验让你专注于写作而不是纠结于排版。
在markdown中存在各种各样的语法,这种语法对于程序员来说很简单的,基于这些语法极大的加快了我们程序员的出文档速度。而且因为markdown语法简单所以他支持导出其它格式
markdown简单语法
标题
# 这是一级标题 ## 这是二级标题 ### 这是三级标题 #### 这是四级标题 ##### 这是五级标题 ###### 这是六级标题复制代码
这是一级标题
这是二级标题
这是三级标题
这是四级标题
这是五级标题
这是六级标题
格式
**这是加粗的文字** *这是倾斜的文字*` ***这是斜体加粗的文字*** ~~这是加删除线的文字~~复制代码
这是加粗的文字 这是倾斜的文字` 这是斜体加粗的文字 这是加删除线的文字
引用
>这是引用的内容 >>这是引用的内容 >>>>>>>>>>这是引用的内容复制代码
这是引用的内容
这是引用的内容
这是引用的内容
其它
还有比如图片、数学公式、流程图等等复杂的东西。这些东西你想进阶想可以深入下
进入主题
/** * 通过markdown文本获取--- ---之间的内容 : 前未key * 兼容linux 、 windows * @param content * @return */ public Map<String, Object> getItemFromMDCommon(String content) { Map<String, Object> map = new HashMap<String, Object>(); List<String> contentList = Arrays.asList(content.split("\n")); if (CollectionUtil.isNotEmpty(contentList)) { Integer status=0; String lastKey = ""; for (String line : contentList) { line = line.replaceAll("\r|\n", ""); if (status == 1) { if (line.contains(":")) { Integer splitIndex = line.indexOf(":"); lastKey = line.substring(0,splitIndex); String lastContent = line.substring(splitIndex+1); map.put(lastKey.trim(), lastContent.trim()); } else if(line.contains("-")&&!line.contains("---")) { String[] split = line.split("-"); String con = split[1].trim(); con = con.substring(1, con.length() - 1); List<String> subContentList = Arrays.asList(con.split(",")); map.put(lastKey.trim(), subContentList); } } if ("---".equals(line)) { status++; } } } return map; }复制代码
这段代码是干嘛的呢?主要是读取makrdown中自定义的一个结构语言。
--- title: linux搭建redis集群 date: 2019-07-29 12:00:30 tags: - [redis] categories: - [linux] permalink: zxh prefix: linux ---复制代码
类似上面的语法,主要是用来描述markdown文件内容的分类。当我们需要分析文件是皆可以去解析这部分数据就可以得到改文件的基本信息了。我们可以发现主要是通过键值对的方式存储的,所以我们在读取的时候用map存储,方便其它人使用
作者:本该努力的年龄千万别放弃
链接:https://juejin.cn/post/7025001698087141390