当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/527705.html

相关文章:

  • 全连接神经网络(前馈神经网络)
  • 【llm对话系统】什么是 LLM?大语言模型新手入门指南
  • 【Linux】互斥锁、基于阻塞队列、环形队列的生产消费模型、单例线程池
  • 【学术会议征稿】第五届能源、电力与先进热力系统学术会议(EPATS 2025)
  • ES6 类语法:JavaScript 的现代化面向对象编程
  • Sprintboot原理
  • OpenHarmony 5.0.2 Release来了!
  • Qt 控件与布局管理
  • 使用小尺寸的图像进行逐像素语义分割训练,出现样本不均衡训练效果问题
  • 0.91英寸OLED显示屏一种具有小尺寸、高分辨率、低功耗特性的显示器件
  • 读书笔记--分布式服务架构对比及优势
  • HTML5 新的 Input 类型详解
  • ESP32-CAM实验集(WebServer)
  • Case逢无意难休——深度解析JAVA中case穿透问题
  • Golang笔记——常用库context和runtime
  • 2000-2020年各省第二产业增加值占GDP比重数据
  • unity商店插件A* Pathfinding Project如何判断一个点是否在导航网格上?
  • Day24-【13003】短文,数据结构与算法开篇,什么是数据元素?数据结构有哪些类型?什么是抽象类型?
  • 富文本 tinyMCE Vue2 组件使用简易教程
  • 强化学习在自动驾驶中的实现与挑战
  • 记录 | MaxKB创建本地AI智能问答系统
  • 特种作业操作之低压电工考试真题
  • [免费]基于Python的Django博客系统【论文+源码+SQL脚本】
  • Cannot resolve symbol ‘XXX‘ Maven 依赖问题的解决过程
  • 我们需要有哪些知识体系,知识体系里面要有什么哪些内容?
  • 什么是vue.js组件开发,我们需要做哪些准备工作?
  • 网络工程师 (3)指令系统基础
  • 第4章 神经网络【1】——损失函数
  • 【Python】第五弹---深入理解函数:从基础到进阶的全面解析
  • 【MQ】如何保证消息队列的高性能?