转义字符无效

时间:2012-08-07 11:13:35

标签: java

在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

4 个答案:

答案 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'这不是一个特殊的角色,它抱怨这个。