控制台打印带格式内容

1. 场景

很多软件会在控制台打印带颜色和格式的文字,需要使用转义符实现这个功能。

2. 详细说明

2.1.转义符说明

样式开始:\033[+参数1+;+参数2+;+参数3+m

可以多个参数叠加,若同一类型的参数(如字体颜色)设置了多个,则以最后一个为准。

样式结束:\033[0m

0 是默认样式,也就是表示从此处往后的样式为默认样式

2.2.参数说明

其他格式:

参数值含义
0默认值
1粗体
3斜体
4下划线
7反显
9中划线

字体格式:

参数值含义
30黑色字体
90黑色字体+高亮
31红色字体
91红色字体+高亮
32绿色字体
92绿色字体+高亮
33黄色字体
93黄色字体+高亮
34蓝色字体
94蓝色字体+高亮
35紫色字体
95紫色字体+高亮
36青色字体
96青色字体+高亮
37白色字体
97白色字体+高亮

背景格式:

参数值含义
40黑色背景
100黑色背景+高亮
41红色背景
101红色背景+高亮
42绿色背景
102绿色背景+高亮
43黄色背景
103黄色背景+高亮
44蓝色背景
104蓝色背景+高亮
45紫色背景
105紫色背景+高亮
46青色背景
106青色背景+高亮
47白色背景
107白色背景+高亮

3. 代码实现

格式参数枚举类

public enum TextFormatterEnum {// no formatDEFAULT(0),// other formatBOLD(1),ITALIC(3),UNDERLINE(4),REVERSE_DISPLAY(7),LINE_THROUGH(9),// font formatFONT_BLACK(30),FONT_BLACK_LIGHT(90),FONT_RED(31),FONT_RED_LIGHT(91),FONT_GREEN(32),FONT_GREEN_LIGHT(92),FONT_YELLOW(33),FONT_YELLOW_LIGHT(93),FONT_BLUE(34),FONT_BLUE_LIGHT(94),FONT_PURPLE(35),FONT_PURPLE_LIGHT(95),FONT_CYAN(36),FONT_CYAN_LIGHT(96),FONT_WHITE(37),FONT_WHITE_LIGHT(97),// background formatBACKGROUND_BLACK(40),BACKGROUND_BLACK_LIGHT(100),BACKGROUND_RED(41),BACKGROUND_RED_LIGHT(101),BACKGROUND_GREEN(42),BACKGROUND_GREEN_LIGHT(102),BACKGROUND_YELLOW(43),BACKGROUND_YELLOW_LIGHT(103),BACKGROUND_BLUE(44),BACKGROUND_BLUE_LIGHT(104),BACKGROUND_PURPLE(45),BACKGROUND_PURPLE_LIGHT(105),BACKGROUND_CYAN(46),BACKGROUND_CYAN_LIGHT(106),BACKGROUND_WHITE(47),BACKGROUND_WHITE_LIGHT(107);int value;TextFormatterEnum(int value) {this.value = value;}
}

内容格式化类

import java.util.Arrays;public class TextFormatter {private static final String EMPTY = "";private static final String SEPARATOR = ";";private static final String FORMATTER = "\033[%sm%s\033[0m";public static String formatText(String text, TextFormatterEnum... formats) {if (text == null || text.isEmpty()) {return EMPTY;}if (formats == null || formats.length == 0) {return text;}String[] array = Arrays.stream(formats).map(format -> String.valueOf(format.value)).toArray(String[]::new);String formatStr = String.join(SEPARATOR, array);return String.format(FORMATTER, formatStr, text);}
}

注:在 cmd 或 powershell 窗口,上述代码无法输出带格式内容,可以使用jansi这个库;如果使用 python,在输出到控制台前,先执行cls命令,再输出,即可进行带格式的内容打印。

4. 测试

测试代码:

public class Test {public static void main(String[] args) {System.out.println(TextFormatter.formatText("红、白字体同时设置,后设置的白色覆盖前面的红色,黑色背景带中划线和下划线粗体斜体",TextFormatterEnum.UNDERLINE, TextFormatterEnum.LINE_THROUGH, TextFormatterEnum.ITALIC,TextFormatterEnum.BOLD, TextFormatterEnum.FONT_RED_LIGHT, TextFormatterEnum.FONT_WHITE,TextFormatterEnum.BACKGROUND_BLACK) + TextFormatter.formatText("蓝色字体紫色背景带中划线和下划线粗体斜体+反显",TextFormatterEnum.FONT_YELLOW, TextFormatterEnum.UNDERLINE, TextFormatterEnum.LINE_THROUGH,TextFormatterEnum.ITALIC, TextFormatterEnum.BOLD, TextFormatterEnum.BACKGROUND_PURPLE,TextFormatterEnum.REVERSE_DISPLAY));}
}

IDEA 控制台输出:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/80369.shtml

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

相关文章

[6-2] 定时器定时中断定时器外部时钟 江协科技学习笔记(41个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 V 30 31 32 33 34 35 36 37 38 39 40 41

数据库的脱敏策略

数据库的脱敏策略:就是屏蔽敏感的数据 脱敏策略三要求: (1)表对象 (2)生效条件(脱敏列、脱敏函数) (3)二元组 常见的脱敏策略规则: 替换、重排、…

Python序列化的学习笔记

1. Npy&Numpy O4-mini-Cursor:如果.npy文件里包含了「Python对象」而非纯数值数组时,就必须在加载时加上allow_pickleTrue。

[思维模式-27]:《本质思考力》-7- 逆向思考的原理与应用

目录 一、什么是逆向思考 1.1、逆向思考的六大核心思维模式 1.2、逆向思考的四大实践方法 1. 假设倒置法 2. 缺陷重构法 3. 用户反推法 4. 规则解构法 1.3、逆向思考的经典案例库 1. 商业创新:从“卖产品”到“卖服务” 2. 用户体验:从“功能满…

在python中,为什么要引入事件循环这个概念?

在Python中,事件循环(Event Loop)是异步编程的核心机制,它的引入解决了传统同步编程模型在高并发场景下的效率瓶颈问题。以下从技术演进、性能优化和编程范式三个角度,探讨这一概念的必要性及其价值。 一、同步模型的局…

Taccel:一个高性能的GPU加速视触觉机器人模拟平台

触觉感知对于实现人类水平的机器人操作能力至关重要。而视觉触觉传感器(VBTS)作为一种有前景的解决方案,通过相机捕捉弹性凝胶垫的形变模式来感知接触的方式,为视触觉机器人提供了高空间分辨率和成本效益。然而,这些传…

oracle 会话管理

会话管理 1:查看当前所有用户的会话(SESSION): SELECT * FROM V S E S S I O N W H E R E U S E R N A M E I S N O T N U L L O R D E R B Y L O G O N T I M E , S I D ; 其中 O r a c l e 内部进程的 U S E R N A M E 为空 2 :查看当前…

Python开发后端InfluxDB数据库测试接口

1、使用PyCharm创建一个Python项目wzClear 2、新建package包wzInfluxdb和wzConfig包,如上图所示,新建一个DB.json配置文件并添加influxdb配置信息,DB.json为统一配置文件 {"influxdbV1": {"url": "http://192.168.0…

采用LLaMa-Factory对QWen大模型实现微调(效果很好)

前言 LLaMA-factory是一个非常有用的开源框架。关于利用llama-factory实现大模型的微调,研究了有一个多月了,终于相对成功的微调了一个QWen的大模型。其中的曲折愿和大家分享! 一、源码的下载 在github上的网址: GitHub - hiyou…

深入理解深度Q网络DQN:基于python从零实现

DQN是什么玩意儿? 深度Q网络(DQN)是深度强化学习领域里一个超厉害的算法。它把Q学习和深度神经网络巧妙地结合在了一起,专门用来搞定那些状态空间维度特别高、特别复杂的难题。它展示了用函数近似来学习价值函数的超能力&#xf…

机械物理:水力发电站工作原理是什么?

水利发电站的工作原理是将水的势能转化为电能,主要依赖水体的重力作用与能量转换设备。以下是其核心步骤和组成部分的详细解释: 1. 蓄水与势能积累 水坝与水库:通过建造水坝拦截河流,形成水库蓄水。水位升高后,水体的…

[面试]SoC验证工程师面试常见问题(五)TLM通信篇

SoC验证工程师面试常见问题(五) 摘要:UVM (Universal Verification Methodology) 中的 TLM (Transaction Level Modeling) 通信是一种用于在验证组件之间传递事务(Transaction)的高层次抽象机制。它通过端口(Port)和导出(Export)实现组件间的解耦通信,避免了信…

CAD属性图框值与Excel联动(CAD块属性导出Excel、excel更新CAD块属性)——CAD c#二次开发

CAD插件实现块属性值与excel的互动,效果如下: 加载dll插件(CAD 命令行输入netload ,运行xx即可导出Excel,运行xx1即可根据excel更新dwg块属性值。) 部分代码如下 // 4. 开启事务更新CAD数据using (Transact…

【数据挖掘】Apriori算法

Apriori算法是经典的关联规则挖掘算法,用于从事务型数据库中发现频繁项集和强关联规则,特别常用于购物篮分析等场景。 🧠 核心思想(Apriori原则) 一个项集是频繁的,前提是它的所有子集也必须是频繁的。 即&…

单链表设计与实现

01. 单链表简介 在数据结构中,单链表的实现可以分为 带头结点 和 不带头结点 两种方式,这里我们讨论第二种方式。 头结点:链表第一个节点不存实际数据,仅作为辅助节点指向首元节点(第一个数据节点)。头指…

【论文阅读】——Articulate AnyMesh: Open-Vocabulary 3D Articulated Objects Modeling

文章目录 摘要一、介绍二、相关工作2.1. 铰接对象建模2.2. 部件感知3D生成 三、方法3.1. 概述3.2. 通过VLM助手进行可移动部件分割3.3. 通过几何感知视觉提示的发音估计3.4. 通过随机关节状态进行细化 四、实验4.1. 定量实验发音估计设置: 4.2. 应用程序 五、结论六、思考 摘要…

Zookeeper单机版安装部署

目录 1.1、概述1.2、系统环境1.3、部署流程1.3.1、下载安装包1.3.2、解压文件1.3.3、创建数据目录和日志目录1.3.4、配置ZooKeeper1.3.5、启动ZooKeeper服务1.3.6、连接和验证 1.4、Zookeeper服务管理命令1.4.1、启动Zookeeper服务1.4.2、停止Zookeeper服务1.4.3、查看Zookeepe…

在 Elasticsearch 中删除文档中的某个字段

作者:来自 Elastic Kofi Bartlett 探索在 Elasticsearch 中删除文档字段的方法。 更多有关 Elasticsearch 文档的操作,请详细阅读文章 “开始使用 Elasticsearch (1)”。 想获得 Elastic 认证?查看下一期 Elasticsear…

元数据和主数据

元数据和主数据是数据管理中的两个关键概念,其核心区别如下: 1. 定义与本质 元数据(Metadata) “关于数据的数据”,用于描述数据的属性、结构、来源、用途等上下文信息。 示例:数据库表的字段名称、数据类型…

java的Stream流处理

Java Stream 流处理详解 Stream 是 Java 8 引入的一个强大的数据处理抽象,它允许你以声明式方式处理数据集合(类似于 SQL 语句),支持并行操作,提高了代码的可读性和处理效率。 一、Stream 的核心概念 1. 什么是 Str…