Java-MarkDown文件创建-工具类
1. 思路
根据markdown语法,拼装markdown文本内容
2. 工具类
import java.util.Arrays;
import java.util.List;
/**
* Markdown生成工具类
* @Author: 20004855
* @Date: 2021/1/15 16:00
*/
public class MarkdownGenerator {
private StringBuilder content;
public MarkdownGenerator() {
this.content = new StringBuilder();
}
private String repeatChar(int count, char ch) {
StringBuilder sb = new StringBuilder(count);
for (int i = 0; i < count; i++) {
sb.append(ch);
}
return sb.toString();
}
/**
* 添加标题
*
* @param level 标题级别(1-6)
* @param text 标题文本
*/
public void addHeader(int level, String text) {
if (level < 1 || level > 6) {
throw new IllegalArgumentException("标题级别必须在1-6之间");
}
content.append("\n").append(repeatChar(level, '#')).append(" ").append(text).append("\n\n");
}
/**
* 添加段落文本
*
* @param text 段落文本
*/
public void addParagraph(String text) {
content.append(text).append("\n\n");
}
/**
* 添加代码块
*
* @param code 代码内容
* @param language 语言类型
*/
public void addCodeBlock(String code, String language) {
content.append("```").append(language).append("\n")
.append(code)
.append("\n```\n\n");
}
/**
* 添加表格
*
* @param headers 表头
* @param rows 数据行
*/
public void addTable(List<String> headers, List<List<String>> rows, String... alignment) {
// 添加表头
content.append("|");
headers.forEach(header -> content.append(" ").append(header).append(" |"));
content.append("\n|");
// 添加对齐标记
String alignMark = ":-";
if (alignment.length > 0) {
String align = alignment[0].toLowerCase();
if ("center".equals(align)) {
alignMark = ":-:";
} else if ("right".equals(align)) {
alignMark = "-:";
}
}
// 添加分隔行
String finalAlignMark = alignMark;
headers.forEach(header ->
content.append(" ")
.append(finalAlignMark)
.append(" |"));
content.append("\n");
// 添加数据行
for (List<String> row : rows) {
content.append("|");
row.forEach(cell -> content.append(" ").append(cell).append(" |"));
content.append("\n");
}
content.append("\n");
}
/**
* 添加列表
*
* @param items 列表项
* @param ordered 是否为有序列表
*/
public void addList(List<String> items, boolean ordered) {
content.append("\n");
for (int i = 0; i < items.size(); i++) {
if (ordered) {
content.append(i + 1).append(". ");
} else {
content.append("- ");
}
content.append(items.get(i)).append("\n");
}
content.append("\n");
}
/**
* 添加加粗文本
*
* @param text 文本内容
*/
public void bold(String text) {
content.append("**").append(text).append("**");
content.append("\n");
}
/**
* 添加斜体文本
*
* @param text 文本内容
*/
public void italic(String text) {
content.append("*").append(text).append("*");
content.append("\n");
}
/**
* 添加链接
*
* @param text 链接文本
* @param url 链接地址
*/
public void addLink(String text, String url) {
content.append("[").append(text).append("](").append(url).append(")\n\n");
}
/**
* 添加图片
*
* @param altText 替代文本
* @param imageUrl 图片地址
*/
public void addImage(String altText, String imageUrl) {
content.append("![").append(altText).append("](").append(imageUrl).append(")\n\n");
}
/**
* 添加引用块
*
* @param text 引用文本
*/
public void addQuote(String text) {
content.append("> ").append(text).append("\n\n");
}
/**
* 添加分隔线
*/
public void addHorizontalRule() {
content.append("---\n\n");
}
/**
* 获取生成的Markdown内容
*/
public String getContent() {
return content.toString();
}
public static void main(String[] args) {
try {
MarkdownGenerator md = new MarkdownGenerator();
// 添加标题
md.addHeader(1, "项目文档");
// 添加段落
md.addParagraph("这是一个示例文档,用于展示Markdown生成器的功能。");
// 添加代码块
md.addCodeBlock("System.out.println(\"Hello World!\");", "java");
// 添加表格
List<String> headers = Arrays.asList("名称", "类型", "说明");
List<List<String>> rows = Arrays.asList(
Arrays.asList("id", "Integer", "主键"),
Arrays.asList("name", "String", "名称"),
Arrays.asList("status", "Boolean", "状态")
);
md.addTable(headers, rows);
// 添加列表
List<String> items = Arrays.asList("项目1", "项目2", "项目3");
md.addList(items, true); // 有序列表
// 添加链接
md.addLink("访问GitHub", "https://github.com");
// 添加图片
md.addImage("示例图片", "path/to/image.png");
// 添加引用
md.addQuote("这是一段引用文本");
// 添加分隔线
md.addHorizontalRule();
String content = md.getContent();
System.out.println("===========");
System.out.println(content);
System.out.println("===========");
// 在Web应用中下载
// md.downloadMarkdown(response, "example.md");
} catch (Exception e) {
e.printStackTrace();
}
}
}