03.04 Escape-Sequenzen

Um bestimmte Zeichen in Strings oder chars darzustellen, ist es notwendig diese zu maskieren. Einige Zeichen werden also durch so genannte Escape-Sequenzen dargestellt. Wie sollte auch sonst in einem String ein doppeltes Hochkomma dargestellt werden, ohne die Zeichenkette vorzeitig zu beenden?

Sequenz Bedeutung
\b Rückschritt (Backspace)
\t Horizontaler Tabulator
\n Zeilenumbruch
\f Seitenumbruch (Formfeed)
\r Wagenrücklauf (Carriage return)
\“ Doppeltes Anführungszeichen
\‘ Einfaches Anführungszeichen
\\ Backslash
\nnn Oktalzahl nnn (kann auch kürzer als 3 Zeichen sein, darf nicht größer als Oktal 377 sein)
\uXXXX Unicode XXXX (hexadezimal)

Um ein einfaches Anführungszeichen in einem String darzustellen muss dieses nicht maskiert werden – in einem char allerdings schon.

char hochkomma = '\'';

Ein Beispiel:

System.out.println("Peter sagte:\"Hallo Monika!\"\nWoraufhin " +
  "Monika antwortete:\"Hi Peter.\"");
Previous Article
Next Article

7 Replies to “03.04 Escape-Sequenzen”

  1. Angelika

    Hallo,

    wie kann ich eine DINA4 Seite Text escapen?
    Alles händig zu durchsuchen und escapen dürfte etwas lange dauern?

    Grüße,
    Angelika

  2. Stefan Kiesel

    Hallo Angelika,

    ich verstehe leider nicht genau, was sie machen wollen. In welchem „Format“ liegt die DINA4-Seite vor? Wollen Sie den Text automatisch von Java escapen lassen?

    Grüße
    Stefan

  3. Angelika

    DINA4 war auf die Text-Mänge bezogen.
    Ja, ich möchte gerne viel Text automatisch escapen lassen.

    Grüße,
    Angelika

  4. Stefan Kiesel

    Und warum sollte man einen bereits getippten Text escapen? In welchem Format liegt der Text vor?

    Sorry, ich kann gerade nicht nachvollziehen, was Sie hören möchten.

    Grüße
    Stefan

  5. Angelika

    Bsp1:
    Angenommen ich möchte sowas ähnliches wie z.B. http://nopaste.info/ nachprogrammieren.
    Dann möchte ich gerne mein Quelltext (bereits getippt) innerhalb der DB speichern.

    Bsp2:
    Ich bin gerade dabei XSS zu testen. Hierfür möchte ich JavaScript innerhalb der DB speichern.

    Ich hoffe, mein Anliegen ist etwas klarer geworden.

    Grüße,
    Angelika

  6. Stefan Kiesel

    Hallo Angelika,

    Sie müssen nur Texte, die sie direkt (hart) in (Java-)Quellcode einprogrammieren escapen. Bspw.

    String test ="Zeilen\numbruch";

    Texte, die von außerhalb des Programms eingelesen werden (bspw. indem Sie sich den Text aus einer JTextArea in Java, einer textarea in HTML oder aus einer Datei auf der Festplatte holen) müssen nicht escaped werden, um sie in einem Programm, bspw. gespeichert in einem String, zu verwenden. Das Escapen dient vereinfacht gesagt nur dem Compiler/Interpreter, um festzustellen, dass Sie irgendwelche Sonderzeichen darstellen möchten, die sich sonst im Quelltext einer Programmiersprache nicht abbilden lassen würden.

    Wenn Sie via SQL Texte in eine Datenbank schicken wollen, dann müssen Sie entweder das Escapen selbst übernehmen (bspw. mit Hilfe von regulären Ausdrücken oder Suchkonstruktionen mit Schleifen) oder, was sinnvoller ist und nahezu in jeder Programmiersprache zur Verfügung steht, Sie lassen den Text automatisch escapen, indem Sie die Aufgabe durch Verwendung entsprechender Konstrukte dem Datenbanktreiber abtreten. In Java würden Sie das bspw. mit PreparedStatements und der setXYZ, konkret setString-Methoden realisieren.

    Ich hoffe ich konnte Ihre Frage beantworten. Ansonsten bitte einfach noch einmal nachfragen.

    Grüße
    Stefan

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.