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

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...