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

4

4 に答える 4

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では、バックスラッシュ\は文字列で特別な意味\nを持っているため、 (改行)や\t (タブ)などの特殊文字に使用されます。

ここにトピックの良い説明があります。

于 2012-08-07T11:15:10.050 に答える
1

\e有効なエスケープ シーケンスではないためです。バックスラッシュを印刷したい場合は、エスケープする必要があります。"\\e[0;31m Red"

このページで、有効なエスケープ シーケンスのリストを確認できます。

于 2012-08-07T11:15:45.290 に答える
1

ここでANSI エスケープ シーケンスを生成しようとしていると思います。

\eは Java では有効な文字ではありません。代わりに必要なのは\u001b、ANSI シーケンスの開始文字です。

AnsiConsole.out.println("\u001b[0;31m Red");
于 2012-08-07T11:22:27.413 に答える
0

表示される文字列に '\' (バックスラッシュ) を含めたい場合は、別の '\' でエスケープする必要があります =>AnsiConsole.out.println("\\e[0;31m Red");

現在、Java は、特殊文字ではない 'e' をエスケープしようとしていることを認識しており、それについて不平を言っています。

于 2012-08-07T11:16:30.413 に答える