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

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...