当前位置: 首页 > 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

相关文章:

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

Java-MarkDown文件创建-工具类 1. 思路 根据markdown语法&#xff0c;拼装markdown文本内容 2. 工具类 import java.util.Arrays; import java.util.List;/*** Markdown生成工具类* Author: 20004855* Date: 2021/1/15 16:00*/ public class MarkdownGenerator {private Str…...

全连接神经网络(前馈神经网络)

一、全连接神经网络介绍 在多层神经网络中&#xff0c; 第 N 层的每个神经元都分别与第 N-1 层的神经元相互连接。 1、神经元 这个神经元接收的输入信号为向量 &#xff0c; 向量为输入向量的组合权重&#xff0c; 为偏置项&#xff0c; 是一个标量。 神经元的作用是对输入向…...

【llm对话系统】什么是 LLM?大语言模型新手入门指南

什么是 LLM&#xff1f;大语言模型新手入门指南 大家好&#xff01;欢迎来到 LLM 的奇妙世界&#xff01;如果你对人工智能 (AI) 的最新进展&#xff0c;特别是那些能像人类一样阅读、写作甚至进行对话的 AI 感兴趣&#xff0c;那么你来对地方了。这篇文章将带你认识 LLM 的基…...

【Linux】互斥锁、基于阻塞队列、环形队列的生产消费模型、单例线程池

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;Linux 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 1、互斥锁2、生产消费模型2.1 阻塞队列2.2 环形队列 3、单例线程池4、线程安全和重入问题 1、互斥锁 临界资源&#xff1a;多线程…...

【学术会议征稿】第五届能源、电力与先进热力系统学术会议(EPATS 2025)

能源、电力与先进热力系统设计是指结合物理理论、工程技术和计算机模拟&#xff0c;对能源转换、利用和传输过程进行设计的学科领域。它涵盖了从能源的生产到最终的利用整个流程&#xff0c;旨在提高能源利用效率&#xff0c;减少能源消耗和环境污染。 重要信息 官网&#xf…...

ES6 类语法:JavaScript 的现代化面向对象编程

Hi&#xff0c;我是布兰妮甜 &#xff01;ECMAScript 2015&#xff0c;通常被称为 ES6 或 ES2015&#xff0c;是 JavaScript 语言的一次重大更新。它引入了许多新特性&#xff0c;其中最引人注目的就是类&#xff08;class&#xff09;语法。尽管 JavaScript 一直以来都支持基于…...

Sprintboot原理

配置优先级 Springboot中支持的三种配置文件&#xff1a; application.propertiesapplication.ymlapplication.yaml java系统属性&#xff1a;-Dxxxxxx 命令行参数&#xff1a;-xxxxxx 优先级&#xff1a;命令行参数>java系统属性>application.properties>applicat…...

OpenHarmony 5.0.2 Release来了!

版本概述 OpenHarmony 5.0.2 Release版本对标准系统的能力进行持续完善&#xff0c;以快速迭代的方式推出API 14&#xff0c;相比5.0.1 Release版本&#xff0c;重点做出了如下特性新增或增强&#xff1a; 进一步增强ArkUI、图形图像的能力&#xff0c;提供更多组件的高级属性…...

Qt 控件与布局管理

1. Qt 控件的父子继承关系 在 Qt 中&#xff0c;继承自 QWidget 的类&#xff0c;通常会在构造函数中接收一个 parent 参数。 这个参数用于指定当前空间的父控件&#xff0c;从而建立控件间的父子关系。 当一个控件被设置为另一控件的子控件时&#xff0c;它会自动成为该父控…...

使用小尺寸的图像进行逐像素语义分割训练,出现样本不均衡训练效果问题

在使用小尺寸图像进行逐像素语义分割训练时&#xff0c;确实可能出现样本不均衡问题&#xff0c;且这种问题可能比大尺寸图像更显著。 1. 小尺寸图像如何加剧样本不均衡&#xff1f; (1) 局部裁剪导致类别分布偏差 问题&#xff1a;遥感图像中某些类别&#xff08;如道路、建…...

0.91英寸OLED显示屏一种具有小尺寸、高分辨率、低功耗特性的显示器件

0.91英寸OLED显示屏是一种具有小尺寸、高分辨率、低功耗特性的显示器件。以下是对0.91英寸OLED显示屏的详细介绍&#xff1a; 一、基本参数 尺寸&#xff1a;0.91英寸分辨率&#xff1a;通常为128x32像素&#xff0c;意味着显示屏上有128列和32行的像素点&#xff0c;总共409…...

读书笔记--分布式服务架构对比及优势

本篇是在上一篇的基础上&#xff0c;主要对共享服务平台建设所依赖的分布式服务架构进行学习&#xff0c;主要记录和思考如下&#xff0c;供大家学习参考。随着企业各业务数字化转型工作的推进&#xff0c;之前在传统的单一系统&#xff08;或单体应用&#xff09;模式中&#…...

HTML5 新的 Input 类型详解

HTML5 引入了许多新的输入类型&#xff0c;极大地增强了表单的功能和用户体验。这些新的输入类型不仅提供了更好的输入控制&#xff0c;还支持内置的验证功能&#xff0c;减少了开发者手动编写验证逻辑的工作量。本文将全面介绍 HTML5 中新增的输入类型&#xff0c;并结合代码示…...

ESP32-CAM实验集(WebServer)

WebServer 效果图 已连接 web端 platformio.ini ; PlatformIO Project Configuration File ; ; Build options: build flags, source filter ; Upload options: custom upload port, speed and extra flags ; Library options: dependencies, extra library stor…...

Case逢无意难休——深度解析JAVA中case穿透问题

Case逢无意难休——深度解析JAVA中case穿透问题~ 不作溢美之词&#xff0c;不作浮夸文章&#xff0c;此文与功名进取毫不相关也&#xff01;与大家共勉&#xff01;&#xff01; 更多文章&#xff1a;个人主页 系列文章&#xff1a;JAVA专栏 欢迎各位大佬来访哦~互三必回&#…...

Golang笔记——常用库context和runtime

大家好&#xff0c;这里是Good Note&#xff0c;关注 公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍Golang的常用库context和runtime&#xff0c;包括库的基本概念和基本函数的使用等。 文章目录 contextcontext 包的基本概念主要类型和函数1. **…...

2000-2020年各省第二产业增加值占GDP比重数据

2000-2020年各省第二产业增加值占GDP比重数据 1、时间&#xff1a;2000-2020年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;行政区划代码、地区名称、年份、第二产业增加值占GDP比重 4、范围&#xff1a;31省 5、指标解释&#xff1a;第二产业增加值占GDP比重…...

unity商店插件A* Pathfinding Project如何判断一个点是否在导航网格上?

需要使用NavGraph.IsPointOnNavmesh(Vector3 point) 如果点位于导航网的可步行部分&#xff0c;则为真。 如果一个点在可步行导航网表面之上或之下&#xff0c;在任何距离&#xff0c;如果它不在更近的不可步行节点之上 / 之下&#xff0c;则认为它在导航网上。 使用方法 Ast…...

Day24-【13003】短文,数据结构与算法开篇,什么是数据元素?数据结构有哪些类型?什么是抽象类型?

文章目录 13003数据结构与算法全书框架考试题型的分值分布如何&#xff1f; 本次内容概述绪论第一节概览什么是数据、数据元素&#xff0c;数据项&#xff0c;数据项的值&#xff1f;什么是数据结构&#xff1f;分哪两种集合形式&#xff08;逻辑和存储&#xff09;&#xff1f…...

富文本 tinyMCE Vue2 组件使用简易教程

参考官方教程 TinyMCE Vue.js integration technical reference Vue2 项目需要使用 tinyMCE Vue2 组件(tinymce/tinymce-vue)的第 3 版 安装组件 npm install --save "tinymce/tinymce-vue^3" 编写组件调用 <template><Editorref"editor"v-m…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...

Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践

前言&#xff1a;本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中&#xff0c;跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南&#xff0c;你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案&#xff0c;并结合内网…...

Python常用模块:time、os、shutil与flask初探

一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...

相关类相关的可视化图像总结

目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系&#xff0c;可直观判断线性相关、非线性相关或无相关关系&#xff0c;点的分布密…...

【iOS】 Block再学习

iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...

Java高级 |【实验八】springboot 使用Websocket

隶属文章&#xff1a;Java高级 | &#xff08;二十二&#xff09;Java常用类库-CSDN博客 系列文章&#xff1a;Java高级 | 【实验一】Springboot安装及测试 |最新-CSDN博客 Java高级 | 【实验二】Springboot 控制器类相关注解知识-CSDN博客 Java高级 | 【实验三】Springboot 静…...

Q1起重机指挥理论备考要点分析

Q1起重机指挥理论备考要点分析 一、考试重点内容概述 Q1起重机指挥理论考试主要包含三大核心模块&#xff1a;安全技术知识&#xff08;占40%&#xff09;、指挥信号规范&#xff08;占30%&#xff09;和法规标准&#xff08;占30%&#xff09;。考试采用百分制&#xff0c;8…...