在java中创建服务器, 首先,这是代码。
AnsiConsole.out.println("This is a Test.");
AnsiConsole.out.println("\e[0;31m Red");
AnsiConsole.out.println("\e[0;34m Blue");
AnsiConsole.out.println("\e[0;32m Green");
AnsiConsole.out.println("\e[1;33m Yellow");
所以,我的问题是它将转义字符读为非法。 任何评论?
使用Jansi图书馆http://jansi.fusesource.org/index.html
答案 0 :(得分:2)
你需要逃避反斜杠:
AnsiConsole.out.println("This is a Test.");
AnsiConsole.out.println("\\e[0;31m Red");
AnsiConsole.out.println("\\e[0;34m Blue");
AnsiConsole.out.println("\\e[0;32m Green");
AnsiConsole.out.println("\\e[1;33m Yellow");
因为在Java中,反斜杠\
在字符串中有a special meaning:它用于特殊字符,例如\n
(新行)或\t
(制表符)。< / p>
对主题here进行了很好的描述。
答案 1 :(得分:1)
这是因为\e
不是有效的转义序列。如果您确实要打印反斜杠,则需要将其转义:"\\e[0;31m Red"
您可以查看this page以获取有效转义序列列表。
答案 2 :(得分:1)
我假设你在这里尝试制作ANSI Escape Sequences。
\e
不是Java中的有效字符,而是需要的是\u001b
,它是ANSI序列的开头。
AnsiConsole.out.println("\u001b[0;31m Red");
答案 3 :(得分:0)
如果要在打印的字符串中包含'\'(反斜杠),则应使用另一个'\'=&gt;转义它。 AnsiConsole.out.println("\\e[0;31m Red");
目前java了解你试图逃避'e'这不是一个特殊的角色,它抱怨这个。