Etwas ist schief gelaufen! Dieser Artikel wurde als Testaufgabe für eine Stelle im JavaRush-Team geschrieben. Und es wurde als vollwertige Vorlesung geschrieben. Aus diesem Grund garantiere ich Ihnen die Qualität und Quantität des in diesem Beitrag gesammelten nützlichen Wissens. Neben praktischen und theoretischen Informationen enthält der Artikel interessante Fakten, von denen Sie vielleicht noch nicht einmal wissen!
Hallo Welt!
Das Entkommen von Zeichen ist eine sehr interessante und notwendige technische Lösung. Die Notwendigkeit des Zeichen-Escapes hat in der Geschichte der gesamten Programmierbranche eine wichtige Rolle gespielt. In diesem Artikel werden wir darüber sprechen, was Zeichen-Escape ist, warum es notwendig ist, sie zu maskieren und wie Zeichen-Escape in Java implementiert wird. Der Artikel enthält Beispiele und interessante Fakten zum Thema Charakterflucht. Viel Spaß beim Lesen! Alle Informationen in einem Computersystem werden in Form von Text dargestellt, der auf einer niedrigeren Ebene durch Bytes dargestellt wird. Wenn wir einen Brief oder eine Nachricht schreiben, geben wir einen Text ein, der für die Person verständlich ist. Wenn wir Code in der IDE schreiben, geben wir Text ein, den der Compiler analysieren kann. In Java kann Text als ein Typ dargestellt werden,
String
dessen Daten durch Steuerzeichen – gepaarte Anführungszeichen – dargestellt werden.
String str = "Hello World!";
Mit dem Text „Hello World!“ Es treten keine Probleme auf, aber was ist, wenn derselbe Text in der direkten Rede hervorgehoben werden muss? Anhand der Regeln der Grammatik wird deutlich, dass der Text „Hello World!“ neben Steuerzeichen vom Typ auch
String
in direkte Anführungszeichen gesetzt werden muss.
String str = "Java said, "Hello World!"";
Diese Option wird nicht funktionieren, weil Der Compiler versteht einfach nicht, an welchem Punkt die Initialisierung der Variablen endet
str
. Um dieses und ähnliche Probleme zu lösen, wurde die Erfindung
von Escape-Zeichen erfunden , also von
Steuerzeichen in sogenannte Steuersequenzen, auch
Escape-Sequenzen genannt . Nachfolgend finden Sie eine Liste gültiger Java-Escape-Sequenzen zur Verwendung in Zeichenfolgen.
\t
— Tabulatorzeichen (in Java – das Äquivalent von vier Leerzeichen);
\b
— Ein Rückkehrzeichen im Text, das einen Schritt zurückgeht oder ein Zeichen in einer Zeile löscht (Rücktaste);
\n
— Neues Zeilensymbol;
\r
— Wagenrücklaufsymbol;
\f
— Die Seite zum Anfang der nächsten Seite überspringen;
\'
— Einfaches Anführungszeichen;
\"
— Doppeltes Anführungszeichen;
\\
– Das Backslash-Zeichen (
\
). Lassen Sie uns nun die direkte Rede in unserem Satz hervorheben, damit der Compiler das Geschriebene leicht analysieren kann.
String str = "Java said, \"Hello World!\"";
Somit ist der geschriebene Text sowohl für den Compiler als auch für eine Person verständlich, wenn der Inhalt der Variablen
str
auf dem Bildschirm angezeigt wird. Wir haben herausgefunden, was Charakterflucht ist und warum sie nötig ist. Und sie entkamen sogar dem doppelten Anführungszeichen! Fahren wir mit dem Parsen der verbleibenden Escape-Sequenzen fort.
Das Tabulatorzeichen in einer Zeile wird durch eine Escape-Sequenz angezeigt
\t
und entspricht vier Leerzeichen. Wenn jedoch die Länge einer Zeichenfolge, die aus vier Leerzeichen besteht, gleich der Länge von vier Zeichen ist, ist die Länge einer Zeichenfolge mit einem Tabulatorzeichen gleich eins. Das Tabulatorzeichen wird häufig zum Erstellen von Tabellen oder
pseudografischen Oberflächenelementen verwendet, weil... Dies ist praktischer als das Schreiben von vier Leerzeichen. Nachfolgend finden Sie ein Beispiel für eine pseudografische Schnittstelle.
Unter allen Escape-Sequenzen ist das Symbol
\b
vielleicht das interessanteste, da es uns ermöglicht, das letzte Zeichen in der Ausgabezeile zu löschen, ähnlich wie wenn wir es durch Drücken der
Rücktaste löschen würden .
System.out.print("2 + 2 = 5");
System.out.print("\b");
System.out.print("4");
Symbole
\n
haben
\r
eine gemeinsame Geschichte – schauen wir sie uns gemeinsam an. Möglicherweise ist Ihnen das Zeilenumbruchzeichen
\n
schon einmal begegnet. Wenn eine Methode beispielsweise
println()
Informationen so ausgibt, dass die nächste Ausgabe in einer neuen Zeile erfolgt, führt die Methode
print()
nach der Ausgabe keinen Zeilenumbruch durch. Wenn Sie jedoch am Ende der Ausgabe ein Zeichen hinzufügen
\n
, erfolgt ein Zeilenumbruch wird aufgeführt.
System.out.print(„Die nächste Ausgabe erfolgt in einer neuen Zeile\n“);
System.out.println(„Die nächste Ausgabe erfolgt in einer neuen Zeile“);
Mit dem Wagenrücklaufzeichen
\r
können wir den Cursor an den Anfang der Ausgabezeile zurückbringen und neue Informationen anzeigen, als ob sich zuvor nichts in dieser Zeile befunden hätte.
System.out.print(„Text muss neu geschrieben werden.“);
System.out.print('\r');
System.out.print(„Neuer Text.“);
Tatsächlich geht der Wagenrücklauf auf die Zeit zurück, als Texte auf Schreibmaschinen gedruckt wurden. Um einen Zeilenvorschub durchzuführen, war es notwendig, den Schlitten zu bewegen und den Hebel (Teil des Schreibmaschinenmechanismus) abzusenken, woraufhin der Zeilenvorschub durchgeführt wurde. Wenn der Hebel nicht abgesenkt wäre, könnte man in derselben Zeile weiterdrucken. Das beobachten wir, wenn wir das Symbol anzeigen
\r
. Wenn der Programmierer in diesem Zusammenhang einen Zeilenumbruch durchführen wollte, führte er aus Gewohnheit eine Zeichenfolge am Ende der Ausgabe aus
\r\n
. Als die Ära der Schreibmaschine zu Ende ging, gab es eine Generation von Programmierern, die diese Reihenfolge noch nutzten, obwohl sie selbst nie an einer Schreibmaschine gearbeitet hatten. Sie vergaßen oft, in welcher Reihenfolge sie eine bestimmte Sequenz abschließen mussten –
\r\n
oder
\n\r
. Dann kam ihnen ein Testwort zu Hilfe
return
, bei dem die Reihenfolge, in der diese Symbole angezeigt wurden, deutlich erkennbar war. Später, bei der Entwicklung von Software für die ersten Windows-Versionen nach MS-DOS, waren Programmierer jedoch gezwungen, die Sequenz zu verwenden
\r\n
. Jetzt müssen Sie sich darüber keine Gedanken mehr machen und verwenden zum Umbrechen einer Zeile nur noch das Zeichen
\n
.
Gehen wir noch einmal zurück in die Zeit, etwa in die 80er Jahre. Damals
\f
wurde das Symbol für Vorwärtsblättern zum Anfang der nächsten Seite populär. Damals gab es Großzeilendrucker, für deren Betrieb man Programmcode schreiben musste, der festlegte, was und wie der Drucker drucken sollte. Und um anzuzeigen, dass der Text auf einer neuen Seite begonnen werden muss, wurde das Symbol verwendet
\f
. In unserer Zeit hat dieses Symbol längst seine Bedeutung verloren und es ist unwahrscheinlich, dass Sie jemals darauf stoßen werden. Die Abmessungen des Lineardruckers können sich durchaus sehen lassen.
Bei Symbolen
\’
ist
\\
alles genau das Gleiche wie beim Escapen eines doppelten Anführungszeichens, am Anfang des Artikels gab es ein Beispiel. Sie müssen beispielsweise ein einfaches Anführungszeichen maskieren, um den Typ char mit einem einfachen Anführungszeichen zu initialisieren.
char ch = '\'';
Escapen Sie das Backslash-Zeichen, um anzugeben, dass das folgende Zeichen nicht Teil der Escape-Sequenz sein wird.
System.out.println(„\\n – Zeilenumbruch-Escape-Sequenz“);
In der Praxis müssen Sie beim Arbeiten mit Pfaden häufig auf Backslashes verzichten:
System.out.println("It's Java string: \"C:\\Program Files\\Java\\jdk1.7.0\\bin\"");
Ich habe betont, dass diese Escape-Sequenzen in Strings (String-Literalen) verwendet werden, weil Der Rest wird zur Beschreibung regulärer Klassenausdrücke verwendet
Pattern
und ist für das Thema dieses Artikels nicht relevant.
Hier sehen Sie eine Liste aller Escape-Sequenzen für die Klasse
Pattern
. Es ist jedoch anzumerken, dass reguläre Ausdrücke in der Form, in der sie jetzt existieren, nicht ohne die Verwendung von Escape-Sequenzen vorstellbar sind, nicht nur in Java, sondern auch in anderen gängigen Programmiersprachen, beispielsweise PHP. In Java wird Zeichen-Escape auch bei der String-Formatierung verwendet. Wenn Sie beispielsweise ein Zeichenfolgenformat für die Anzeige des Prozentsymbols angeben, müssen Sie das Prozentsymbol duplizieren -
%%
, andernfalls erhalten wir eine Fehlermeldung und die IDE fordert Sie auf, den Prozentwert hinzuzufügen.
System.out.printf(„Milchfettanteil: %d%%“, 10);
Damit ist der Artikel abgeschlossen. Ich hoffe, Sie haben viel über das Entkommen von Charakteren gelernt und wie Sie es in die Praxis umsetzen können. Zeichen-Escapezeichen sind in vielen Programmiersprachen üblich. In Java, wie auch in anderen C-ähnlichen Sprachen, ist diese Technologie nahezu identisch implementiert. Daher können die Erkenntnisse, die Sie in diesem Artikel gewinnen, nicht nur in Java nützlich sein. Vielen Dank für Ihre Aufmerksamkeit und viel Erfolg beim Studium!
GO TO FULL VERSION