ubuntuusers.de

Java: bash escape Sequenzen

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

cultsibi

Avatar von cultsibi

Anmeldungsdatum:
14. Oktober 2006

Beiträge: Zähle...

Wohnort: Passau

Um die Ausgabe meines Java-Programms etwas aufzuwerten, möchte ich gerne bash escape Sequenzen benutzen um Text farbig, invers oder einfach nur fett darstellen zu können. In meinem Test wollte ich einen Text fett darstellen. Allerdings kommt Java nicht mit dem Backslash klar, da dies selbst eine Escape-Zeichen für Java-Strings darstellt.

[...]
    public static String BOLD = "\[33[0;1m\]";

    public static String NORMAL = "\[33[0m\]";
[...]

Beim kompilieren treten dann folgende Fehler auf:

$ j
MyBoolean.java:76: illegal escape character
    public static String BOLD = "\[33[0;1m\]";
                                  ^
MyBoolean.java:76: illegal escape character
    public static String BOLD = "\[33[0;1m\]";
                                           ^
MyBoolean.java:78: illegal escape character
    public static String NORMAL = "\[33[0m\]";
                                    ^
MyBoolean.java:78: illegal escape character
    public static String NORMAL = "\[33[0m\]";
                                           ^
4 errors

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

"\\" nutzen.

cultsibi

(Themenstarter)
Avatar von cultsibi

Anmeldungsdatum:
14. Oktober 2006

Beiträge: 71

Wohnort: Passau

Habe ich auch schon ausprobiert. Dann wird das Programm zwar ohne Fehler kompiliert, allerdings werden die Sequenzen auch "plain" in der bash dargestellt.

Sid_Burn

Anmeldungsdatum:
23. Oktober 2004

Beiträge: 2159

cultsibi hat geschrieben:

Habe ich auch schon ausprobiert. Dann wird das Programm zwar ohne Fehler kompiliert, allerdings werden die Sequenzen auch "plain" in der bash dargestellt.

Klar es ist ja auch nur ein String. Das was du machen musst ist nicht ein String ausgeben der "\[33[1m" enthält. Das Funktioniert nur direkt unter der Bash weil die zeichenkombinationen \[33 unter der Bash speziell sind. Mit diesem gibts du direkt das ASCII Zeichen das der Oktalen Zahl 33 (27 dezimal) entspricht aus. Du musst also in deinem Programm ein Escape Zeichen ausgeben, und nicht "\[33".

Wie das genau in Java geht müsstest du selber Wissen.

In Perl gibt es z.B. folgende Möglichkeiten das Escape Zeichen aszugeben

1) \e
2) \033
3) chr(27)

1) Das Escape Zeichen als direkte Sequenz wie \n, \r etc.
2) Das Zeichen Oktal notiert
3) Das ASCII Zeichen 27

perl -wle 'print "\e[1m", "hallo"'[/code]
Das obere Beispiel gibt z.B. ein fett geschriebenes "hallo" aus.


Gibt es den keine Bibliothek dir das abnimmt diese Escape Zeichen zu schreiben?

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17620

Wohnort: Berlin

		System.out.print ("[2J");
Antworten |