【编程实践】:Java基础+MarkDown文件解析器

1、前言

个人博客系统正在开发中。。。
欢迎路过的java新手一起交流。。。
欢迎大佬指正。。。

本文主要描述文章发布过程中MarkDown文件的解析过程。
MarkDown文件有以下语法说明

语法 格式
标题 标题采用#+#的数量+空格,如# 表示一级标题,## 表示二级标题
文本样式-强调 *文本*,表示强调文本
文本样式-加粗 **文本**,表示j加粗文本
文本样式-标记 ==文本==,表示标记文本
文本样式-删除 ~~文本~~,表示删除文本
链接 [链接名称](链接地址)
图片 ![图片提示](图片地址+#+对齐方式 =图片宽度x图片高度)

本文主要实现以上语法的解析

2、设计思路

首先,段落是一个MarkDown文件的组成单位,它以\r\n作为标志。
其次,一个标题就构成一个段落。
第三,普通文本、文本样式、链接和图片在段落之中。
最后,段落与文本、图片构成树结构。

针对以上特征,可以做出以下设计思路
Ⅰ、对于一个MarkDown文件需使用Scanner类获取其中的段落。
Ⅱ、对于一个语法应该确定相应的解析逻辑解析相应的文本。
Ⅲ、对解析出的文本设置相应的处理器。

关于解析逻辑
Ⅰ、使用String对象的charAt方法逐次扫描段落。
Ⅱ、对相应的语法设置相应的布尔标志表示语法开始或者结束。
Ⅲ、用相应的逻辑解析语法格式并记录标志位。
Ⅳ 、通过标志位从段落字符串中提取子串。

关于处理器
Ⅰ、用一种Html标签表示相应的文本格式。
Ⅱ、给标签加上内联样式以便识别相应的文本内容。

3、代码清单

3.1、未加处理器调试程序

package org.fine123.test;

import java.io.File;
import java.io.FileInputStream;
import java.util.Scanner;


public class TestArticleURL {
   
	public static void main(String[] args) {
   
		String MdFilesrc = "E:/Download/app/Blog/_drafts/test.md";
		File file = new File(MdFilesrc);
		try {
   
			if (file.exists()) {
   
				FileInputStream in = new FileInputStream(file);
				Scanner scanner = new Scanner(in);
				while (scanner.hasNext()) {
   
					String s = scanner.nextLine();
					s = s.trim();

					boolean contentTitleFlag = false;
					int contentTitleCount = 0;

					boolean boldTextFlag = false;
					int blodTextStart = 0;
					int boldTextEnd = 0;

					boolean markedTextFlag = false;
					int markedTextStart = 0;
					int markedTextEnd = 0;

					boolean deleteTextFlag = false;
					int deleteTextStart = 0;
					int deleteTextEnd = 0;

					boolean linkTitleTextFlag = false;
					int linkTitleTextStart = 0;
					int linkTitleTextEnd = 0;
					boolean linkAddrTextFlag = false;
					int linkAddrTextStart = 0;
					int linkAddrTextEnd = 0;

					boolean ImgTextFlag = false;

					for (int i = 0; i < s.length(); i++) {
   
						char c = s.charAt(i);

						/* 内容标题解析器开始 */
						if (c == '#' && contentTitleFlag) {
   
							contentTitleCount++;
						} else if (c == ' ' && i > 0 && s.
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值