当前位置: 首页 > news >正文

控制台打印带格式内容

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 控制台输出:
在这里插入图片描述

相关文章:

  • 共享内存与信号量结合
  • 细说getOutputStream()方法
  • 华为云服务器:产业升级的“数字神经中枢”​
  • 磁盘损坏无法读取的深度解析与数据救援实战指南
  • 带防护的操作
  • 【React】Craco 简介
  • 从零开始开发纯血鸿蒙应用之XML解析
  • split和join的区别‌
  • 【JEECG 组件扩展】JSwitch开关组件扩展单个多选框样式
  • 优化理赔数据同步机制:从4小时延迟降至15分钟
  • Java 程序流程控制篇
  • 构建 PostGIS 与 pgRouting容器镜像:打造强大的地理空间分析
  • Qt开发经验 --- 避坑指南(13)
  • 【多模态】IMAGEBIND论文阅读
  • MCP 传输层代码分析
  • 什么是建行财资云,招行CBS,光大跨行通
  • 什么是 ANR 如何避免它
  • 电池单元和电极性能
  • 何人传来空指针-GDB调试
  • Linux文件编程——open函数
  • 王毅会见巴西外长维埃拉、总统首席特别顾问阿莫林
  • 从“求生”到“生活”:医保纳入创新药让梗阻性肥厚型心肌病患者重拾生活掌控权
  • 中国一直忽视欧盟经贸问题关切?外交部:事实证明中欧相互成就,共同发展
  • 2025年度十大IP!IP SH荣膺文化综合类TOP10
  • 国际博物馆日中国主会场确定,北京将展“看·见殷商”等展览
  • 减重人生|走过节食弯路,她如何半年减60斤找回自信?