Bootstrap

1. Java-MarkDown文件创建-工具类

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();
        }
    }
}

3. 测试

image-20250126155709687

;