2012-08-07 127 views
1

在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

也許你想要'\ u001b'這是ESC字符。 – 2012-08-07 11:22:28

回答

1

我假設你正試圖在這裏生產ANSI Escape Sequences

\e在Java中不是一個有效的字符,你需要的是\u001b這是ANSI序列的開始。

AnsiConsole.out.println("\u001b[0;31m Red"); 
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(標籤)。

對主題here有很好的描述。

1

這是因爲\e不是有效的轉義序列。如果您確實想要打印反斜槓,則需要將其轉義:"\\e[0;31m Red"

您可以檢查this page以獲取有效轉義序列的列表。

0

如果你想打印字符串中包含「\」(反斜線),你應該與其他「\」轉義=>AnsiConsole.out.println("\\e[0;31m Red");

目前Java的理解你試圖逃跑的「e」,這是不是一個特殊的性格,它抱怨這一點。