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.\"");
Hallo,
wie kann ich eine DINA4 Seite Text escapen?
Alles händig zu durchsuchen und escapen dürfte etwas lange dauern?
Grüße,
Angelika
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
DINA4 war auf die Text-Mänge bezogen.
Ja, ich möchte gerne viel Text automatisch escapen lassen.
Grüße,
Angelika
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
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
Mein Anliegen lässt sich mit „StringEscapeUtils“ realisieren:
http://commons.apache.org/lang/api-2.4/org/apache/commons/lang/StringEscapeUtils.html
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 dersetXYZ
, konkretsetString
-Methoden realisieren.Ich hoffe ich konnte Ihre Frage beantworten. Ansonsten bitte einfach noch einmal nachfragen.
Grüße
Stefan