【发布时间】:2020-09-29 16:05:09
【问题描述】:
当使用 ANSI 转义序列对字符串进行着色,然后获取相关字符串的 .length() 时,它不会给出字符串可见部分的长度,而是包含转义序列的一部分。
import java.util.*;
public class ColorTest {
public static void main(String[] args){
String RED = "\u001B[31m";
String test = "Test";
// Prints length with color
System.out.println(test);
System.out.println("Length: "+test.length());
// Prints length with color
test = RED+test;
System.out.println(test);
System.out.println("Length: "+test.length());
// Prints every char found in the String
char[] testCharList = test.toCharArray();
for(char x : testCharList){
System.out.print(x+" ");
}
System.out.println(" ");
}
}
输出: output
由于许多不同的颜色在其转义序列中具有不同数量的数字,(红色为 31,亮红色背景为 101)从 String.length() 数字中总减去一组数字是不可行的.我正在寻找一个适用于所有颜色及其组合的通用解决方案,它只显示显示字符串的长度。
【问题讨论】:
标签: java string escaping ansi color-codes