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.mzph.cn/news/894080.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go学习:格式化输入输出

目录 1. 输出 2. 输入 1. 输出 常用格式&#xff1a; 格式说明%d整型格式%s字符串格式%c字符格式%f浮点数格式%T操作变量所属类型%v自动匹配格式输出 简单示例代码&#xff1a; package mainimport "fmt"func main() {a : 10b : "abc"c : ad : 3.14/…

回顾:Maven的环境搭建

1、下载apache-maven-3.6.0 **网址:**http://maven.apache.org 然后解压到指定的文件夹&#xff08;记住文件路径&#xff09; 2、配置Maven环境 复制bin文件夹 的路径D:\JavaTool\apache-maven-3.6.0\bin 环境配置成功 3、检查是否配置成功 winR 输入cmd 命令行输入mvn -v…

【以音频软件FFmpeg为例】通过Python脚本将软件路径添加到Windows系统环境变量中的实现与原理分析

在Windows系统中&#xff0c;你可以通过修改环境变量 PATH 来使得 ffmpeg.exe 可在任意路径下直接使用。要通过Python修改环境变量并立即生效&#xff0c;如图&#xff1a; 你可以使用以下代码&#xff1a; import os import winreg as reg# ffmpeg.exe的路径 ffmpeg_path …

解决报错“The layer xxx has never been called and thus has no defined input shape”

解决报错“The layer xxx has never been called and thus has no defined input shape”(这里写自定义目录标题) 报错显示 最近在跑yolo的代码时遇到这样一个错误&#xff0c;显示“the layer {self.name} has never been called”.这个程序闲置了很久&#xff0c;每次一遇到…

UE(UltraEdit) 配置简易C/C++编译运行环境

该类型其他帖子 EmEditor 配置简易C/C 编译运行环境_emeditor 代码运行-CSDN博客 RJ TextEd 配置简易C/C 编译运行环境-CSDN博客 这种配置适合ACM竞赛&#xff0c;即要求不使用现代IDE&#xff0c;又想用一个比较好用、至少支持代码高亮的编辑器。 前提条件 1.Mingw GCC 已…

【Unity】 HTFramework框架(五十九)快速开发编辑器工具(Assembly Viewer + ILSpy)

更新日期&#xff1a;2025年1月23日。 Github源码&#xff1a;[点我获取源码] Gitee源码&#xff1a;[点我获取源码] 索引 开发编辑器工具MouseRayTarget焦点视角Collider线框Assembly Viewer搜索程序集ILSpy反编译程序集搜索GizmosElement类找到Gizmos菜单找到Gizmos窗口分析A…

多模态论文笔记——TECO

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细解读多模态论文TECO&#xff08;Temporally Consistent Transformer&#xff09;&#xff0c;即时间一致变换器&#xff0c;是一种用于视频生成的创新模型&…

C语言编译过程全面解析

今天是2025年1月26日&#xff0c;农历腊月二十七&#xff0c;一个距离新春佳节仅一步之遥的日子。城市的喧嚣中&#xff0c;年味已悄然弥漫——能在这个时候坚持上班的人&#xff0c;真可称为“牛人”了吧&#xff0c;哈哈。。。。 此刻&#xff0c;我在重新审视那些曾被遗忘的…

乐优商城项目总结

文章目录 项目简介微服务集群1.enreka注册中心2. zuul网关3. 公共工具类4. 商品微服务5. 文件上传微服务6. 搜索微服务7. 页面静态化微服务8. 用户微服务9. 短信微服务10. 认证微服务11. 购物车微服务12. 订单微服务项目最大的收获项目遇到的问题 项目简介 乐优商城是一个全品…

Yolo11 + OCR 营业执照识别+信息抽取(预期后续改用其他ocr更简单,推理预计使用onnxruntim加速,分c++和python两种方式部署)

目录 一 数据集制作 1 labelimg的安装与使用 2 标注方式 3 数据集制作 二 模型训练 三 使用Yolo11 + OCR 实现“营业执照”信息解析完整方案 1 cutLinesforcode.py 2 getBusinessLicenseContentPart.py 3 getPartWords.py 4 pdfTojpg.py 5 main.py 本项目可用于毕业…

18.Word:数据库培训课程❗【34】

目录 题目 NO1.2.3.4 NO5设置文档内容的格式与样式 NO6 NO7 NO8.9 NO10.11标签邮件合并 题目 NO1.2.3.4 FnF12&#xff1a;打开"Word素材.docx”文件,将其另存为"Word.docx”在考生文件夹下之后到任务9的所有操作均基于此文件&#xff1a;"Word.docx”…

SSM开发(七) MyBatis解决实体类(model)的字段名和数据库表的列名不一致方法总结(四种方法)

目录 方法一: 使用@Results和@Result注解(注解方式) 方法二:修改 SQL 查询语句中的别名(注解方式) 方法三: 全局配置别名或结果映射(resultMap,XML配置方式) 方法四:使用@Column注解 在MyBatis中,如果你希望使用注解的方式来操作数据库,但又遇到实体类中的…

AboutDialog组件的功能和用法

文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了AlertDialog Widget相关的内容,本章回中将介绍AboutDialog Widget.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1 概念介绍 我们在这里说的AboutDialog是一种弹出式窗口&#xff0c;和上一章回中介绍的Al…

设计模式的艺术-策略模式

行为型模式的名称、定义、学习难度和使用频率如下表所示&#xff1a; 1.如何理解策略模式 在策略模式中&#xff0c;可以定义一些独立的类来封装不同的算法&#xff0c;每个类封装一种具体的算法。在这里&#xff0c;每个封装算法的类都可以称之为一种策略&#xff08;Strategy…

软件架构的演变:从大型机和整体式应用到分布式计算

注&#xff1a;本文为 “软件架构演变” 相关文章合辑。 英文引文机翻&#xff0c;未校。 Evolution of Software Architecture: From Mainframes and Monoliths to Distributed Computing Liv Wong Technical Writer August 06, 2024 Software architecture—the blueprint…

SET alter system reload

目录标题 alter system 只是 写 auto 文件SET & alter system1. **会话级别参数&#xff08;Session-level parameters&#xff09;**2. **系统级别参数&#xff08;System-level parameters&#xff09;**3. **某些特定的超级用户参数**4. **修改时生效的参数**总结&#…

Java教程练习:学生信息管理系统

文章目录 学生管理系统1、需求文档需求分析 2、新建学生实体类3、实现基本菜单和退出功能4、查询和添加4.1 查询学生信息4.2 添加学生信息 5、修改和删除5.1 删除功能实现5.2 修改功能实现 完整代码下载 学生管理系统 1、需求文档 需求 采取控制台的方式书写学生管理系统。 …

【Docker】Docker入门了解

文章目录 Docker 的核心概念Docker 常用命令示例&#xff1a;构建一个简单的 C 应用容器1. 创建 C 应用2. 创建 Dockerfile3. 构建镜像4. 运行容器 Docker 优势学习 Docker 的下一步 **一、Docker 是什么&#xff1f;****为什么 C 开发者需要 Docker&#xff1f;** **二、核心概…

新项目上传gitlab

Git global setup git config --global user.name “FUFANGYU” git config --global user.email “fyfucnic.cn” Create a new repository git clone gitgit.dev.arp.cn:casDs/sawrd.git cd sawrd touch README.md git add README.md git commit -m “add README” git push…

崇州市街子古镇正月初一繁华剪影

今天是蛇年正月初一&#xff0c;下午笔者步出家门&#xff0c;逛到了崇州市街子古镇井水街&#xff0c;想看看景象如何。结果看到的是车水马龙、人流如织&#xff0c;繁花似锦&#xff0c;热闹非凡&#xff0c;原来今天开始预订此地摆下的长街宴。心里高兴&#xff0c;便用手机…