修复 echo十六进制彩色打印
This commit is contained in:
@@ -8,14 +8,36 @@ public class echo {
|
|||||||
// 终端彩色打印
|
// 终端彩色打印
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 使用自定义十六进制颜色码在终端打印彩色文本
|
* 使用自定义颜色码在终端打印彩色文本
|
||||||
|
* 支持三种格式:
|
||||||
|
* - "#RRGGBB" 十六进制颜色(如 "#FFC0CB")
|
||||||
|
* - ANSI 颜色代码(如 "31" 表示红色)
|
||||||
|
* - ANSI 扩展色(如 "38;5;208" 表示扩展色)
|
||||||
*
|
*
|
||||||
* @param Message 要打印的文本内容
|
* @param Message 要打印的文本内容
|
||||||
* @param HexColor ANSI 颜色代码(如 "31" 表示红色,"38;5;208" 表示扩展色)
|
* @param HexColor 颜色代码,支持 "#RRGGBB"、ANSI 颜色代码或扩展色
|
||||||
*/
|
*/
|
||||||
public static void ColorHexPrintln(String Message, String HexColor) {
|
public static void ColorHexPrintln(String Message, String HexColor) {
|
||||||
|
if (HexColor.startsWith("#") && (HexColor.length() == 7 || HexColor.length() == 4)) {
|
||||||
|
// #RRGGBB 或 #RGB 格式,转换为 ANSI 真彩色序列
|
||||||
|
String hex = HexColor.substring(1);
|
||||||
|
int r, g, b;
|
||||||
|
if (hex.length() == 3) {
|
||||||
|
// #RGB 简写格式,将每个字符扩展为两位(如 F -> FF)
|
||||||
|
r = Integer.parseInt(String.valueOf(hex.charAt(0)), 16) * 17;
|
||||||
|
g = Integer.parseInt(String.valueOf(hex.charAt(1)), 16) * 17;
|
||||||
|
b = Integer.parseInt(String.valueOf(hex.charAt(2)), 16) * 17;
|
||||||
|
} else {
|
||||||
|
r = Integer.parseInt(hex.substring(0, 2), 16);
|
||||||
|
g = Integer.parseInt(hex.substring(2, 4), 16);
|
||||||
|
b = Integer.parseInt(hex.substring(4, 6), 16);
|
||||||
|
}
|
||||||
|
System.out.println("\033[38;2;" + r + ";" + g + ";" + b + "m" + Message + "\033[0m");
|
||||||
|
} else {
|
||||||
|
// 原有 ANSI 颜色代码直接拼接
|
||||||
System.out.println("\033[" + HexColor + "m" + Message + "\033[0m");
|
System.out.println("\033[" + HexColor + "m" + Message + "\033[0m");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 使用预定义的颜色名称在终端打印彩色文本
|
* 使用预定义的颜色名称在终端打印彩色文本
|
||||||
|
|||||||
@@ -9,5 +9,13 @@ public class echo {
|
|||||||
main.echo.Println("PURPLE", ColorNameEnum.PURPLE);
|
main.echo.Println("PURPLE", ColorNameEnum.PURPLE);
|
||||||
main.echo.Println("GREEN", ColorNameEnum.GREEN);
|
main.echo.Println("GREEN", ColorNameEnum.GREEN);
|
||||||
main.echo.Println("RED", ColorNameEnum.RED);
|
main.echo.Println("RED", ColorNameEnum.RED);
|
||||||
|
|
||||||
|
ColorHexPrintlnTest();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ColorHexPrintlnTest() {
|
||||||
|
main.echo.ColorHexPrintln("ColorHexPrintlnTest_RED", "31");
|
||||||
|
main.echo.ColorHexPrintln("自定义橙色", "38;5;208");
|
||||||
|
main.echo.ColorHexPrintln("十六进制粉色", "#FFC0CB");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
29
src/test/java/echoTest.java
Normal file
29
src/test/java/echoTest.java
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
import top.gtb520.java.gnu.java.utils.library.main;
|
||||||
|
import top.gtb520.java.gnu.java.utils.library.utils.print.ColorNameEnum;
|
||||||
|
|
||||||
|
public class echoTest {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
System.out.println("========== echo 测试开始 ==========");
|
||||||
|
|
||||||
|
// 测试 #RRGGBB 格式
|
||||||
|
main.echo.ColorHexPrintln("十六进制粉色 #FFC0CB", "#FFC0CB");
|
||||||
|
main.echo.ColorHexPrintln("十六进制红色 #FF0000", "#FF0000");
|
||||||
|
main.echo.ColorHexPrintln("十六进制绿色 #00FF00", "#00FF00");
|
||||||
|
main.echo.ColorHexPrintln("十六进制蓝色 #0000FF", "#0000FF");
|
||||||
|
|
||||||
|
// 测试 #RGB 简写格式
|
||||||
|
main.echo.ColorHexPrintln("RGB简写粉色 #F0F", "#F0F");
|
||||||
|
main.echo.ColorHexPrintln("RGB简写白色 #FFF", "#FFF");
|
||||||
|
|
||||||
|
// 测试原有 ANSI 颜色代码(兼容性)
|
||||||
|
main.echo.ColorHexPrintln("ANSI红色 31", "31");
|
||||||
|
main.echo.ColorHexPrintln("ANSI扩展色 38;5;208", "38;5;208");
|
||||||
|
|
||||||
|
// 测试预定义颜色枚举
|
||||||
|
main.echo.Println("枚举红色", ColorNameEnum.RED);
|
||||||
|
main.echo.Println("枚举绿色", ColorNameEnum.GREEN);
|
||||||
|
main.echo.Println("枚举黄色", ColorNameEnum.YELLOW);
|
||||||
|
|
||||||
|
System.out.println("========== echo 测试完成 ==========");
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user