我在有效的代码中内联了ANSI转义序列,但是当从文本文件中读取相同的字符串时,我无法使其正常工作。
dOut.writeBytes(“ \ 033 [0; 31; 1m>帮助(?)-获取帮助\ n”);
(dOut = DataOutputStream)
这将打印红色文本或黑色背景。
从文本文件中读取完全相同的行是行不通的,它会将行打印为纯文本。
BufferedReader menuReader = new BufferedReader(new FileReader("help.txt"));
while ((menuLine = menuReader.readLine()) != null) {
dOut.writeBytes(menuLine + "\n");
}
menuReader.close();
文本文件只有一行:\ 033 [0; 31; 1m>帮助(?)-获取帮助
答案 0 :(得分:0)
编写一个可以识别特定模式的解析器,并将其转换为所需的字符串。
答案 1 :(得分:0)
着色语法通常特定于所使用的外壳,例如一种语法可能在Linux上的Bash Shell中可用,但在Windows上的Cygwin Bash Shell中将失败。此外,某些终端可能无法打印所有颜色组合,例如浅灰色文本的黑色背景有时不起作用。
根据this answer,您必须使用unicode语法。要在白色背景上显示红色文本,请使用以下
:N = 4
A=[]
B=[]
for i in range(N):
B.append(i)
A.append(B.copy())
print(A)
# Output:
# [[0]]
# [[0], [0, 1]]
# [[0], [0, 1], [0, 1, 2]]
# [[0], [0, 1], [0, 1, 2], [0, 1, 2, 3]]
在文件中,您使用的String redFg = "\u001B[31m";
String blackBg = "\u001B[40m";
System.out.println(blackBg + redFg + "> help (?) - Get help");
是一个八进制值,等于十六进制的\033
。您必须将格式语法转换为Java支持的格式。