Название | JavaScript – Das Handbuch für die Praxis |
---|---|
Автор произведения | David Flanagan |
Жанр | Математика |
Серия | |
Издательство | Математика |
Год выпуска | 0 |
isbn | 9783960104926 |
<button onclick="alert('Vielen Dank')">Klick mich</button>
3.3.2Escape-Sequenzen in String-Literalen
Das Backslash-Zeichen (\) hat in JavaScript-Strings eine besondere Aufgabe. Gemeinsam mit dem nachfolgenden Zeichen repräsentiert es ein Zeichen, das auf andere Weise nicht im String dargestellt werden kann. Beispielsweise ist \n eine Escape-Sequenz, die ein Newline-Zeichen darstellt.
Ein weiteres, oben erwähntes Beispiel ist die Escape-Sequenz \', die ein einfaches Anführungszeichen (bzw. einen Apostroph) repräsentiert. Diese Escape-Sequenz ist hilfreich, wenn Sie einen Apostroph in ein String-Literal einschließen müssen, das von einfachen Anführungszeichen begrenzt wird. Escape-Sequenzen nutzen Sie, um die übliche Interpretation eines Zeichens zu verhindern. Deswegen spricht man auch davon, dass der Backslash das nachfolgende Zeichen (wie hier das einfache Anführungszeichen) maskiert. Er sorgt dafür, dass der Apostroph nicht als vorzeitiger Abschluss des Strings verstanden wird:
'You\'re right, it can\'t be a quote'
Tabelle 3-1 führt die Escape-Sequenzen von JavaScript und die durch sie dargestellten Zeichen auf. Drei Escape-Sequenzen sind generisch und können eingesetzt werden, um beliebige Zeichen anhand ihres-Unicode-Zeichencodes in hexadezimaler Form anzugeben. Beispielsweise stellt die Sequenz \xA9 das Copyright-Symbol mit der hexadezimalen Unicode-Codierung A9 dar. In ähnlicher Weise leitet \u ein beliebiges Unicode-Zeichen ein, das durch vier Hexadezimalziffern oder – wenn die Ziffern in geschweiften Klammern eingeschlossen sind – eine bis sechs Ziffern spezifiziert wird: \u03c0 steht zum Beispiel für das Zeichen π und \u{1f600} für das Emoji »Grinning Face«.
Tabelle 3-1: Escape-Sequenzen in JavaScript
Sequenz | Dargestelltes Zeichen |
\0 | NUL-Zeichen (\u0000) |
\b | Rücktaste (\u0008) |
\t | Tabulator (\u0009) |
\n | Zeilenvorschub (\u000A) |
\v | vertikaler Tabulator (\u000B) |
\f | Seitenvorschub (\u000C) |
\r | Wagenrücklauf (\u000D) |
\" | doppeltes Anführungszeichen (\u0022) |
\' | Apostroph oder einfaches Anführungszeichen (\u0027) |
\\ | Backslash (\u005C) |
\xnn | Unicode-Zeichen, das durch die hexadezimalen Ziffern nn angegeben wird |
\unnnn | Unicode-Zeichen, das durch die vier hexadezimalen Ziffern nnnn angegeben wird |
\u{n} | Unicode-Zeichen, das durch den Codepoint n angegeben wird, wobei n für eine bis sechs Hexadezimalziffern zwischen 0 und 10FFFF (ES6) steht |
Steht das \-Zeichen vor einem anderen Zeichen als den in Tabelle 3-1 aufgeführten, wird der Backslash einfach ignoriert (obwohl in zukünftigen Versionen der Sprache natürlich weitere, neue Escape-Sequenzen hinzukommen könnten). Beispielsweise ist \# das Gleiche wie #. Und wie bereits erwähnt, erlaubt ES5 einen Backslash vor einem Zeilenumbruch, damit ein String-Literal über mehrere Zeilen verteilt werden kann.
3.3.3Mit Strings arbeiten
Zu den spracheigenen Features von JavaScript gehört die Fähigkeit, Strings zu verketten. Wenn Sie den +-Operator auf Zahlen anwenden, werden diese addiert. Verwenden Sie ihn dagegen mit Strings als Operanden, verbindet er diese, indem er den zweiten String an den ersten anhängt, zum Beispiel:
let msg = "Hello, " + "world"; // Erzeugt den String "Hello, world".
let greeting = "Welcome to my blog," + " " + name;
Strings können mit den normalen Gleichheits- bzw. Ungleichheitsoperatoren === und !== verglichen werden: Zwei Zeichenketten sind nur dann gleich, wenn sie aus genau der gleichen Sequenz von 16-Bit-Werten bestehen. Sie können auch mit den Operatoren <, <=, > und >= verglichen werden. Der String-Vergleich erfolgt dabei einfach durch den Vergleich der 16-Bit-Werte. (Für ein robusteres Vergleichen und Sortieren von Zeichenketten unter Berücksichtigung von Gebietsschemata lesen Sie mehr in 11.7.3.)
Die Länge einer Zeichenkette – also die Anzahl von 16-Bit-Werten, die sie enthält – ermitteln Sie mit der length-Eigenschaft des Strings:
s.length
Zusätzlich zu dieser length-Eigenschaft bietet JavaScript eine reichhaltige API für das Arbeiten mit Strings:
let s = "Hello, world"; // Definiert einen Text.
// Teile eines Strings erhalten:
s.substring(1,4) // => "ell": Das 2., 3. und 4. Zeichen.
s.slice(1,4) // => "ell": Das Gleiche.
s.slice(-3) // => "rld": Die letzten drei Zeichen.
s.split(", ") // => "[Hello", "world"]: Auftrennung anhand des
// angegebenen Trennstrings.
// Durchsuchen eines Strings:
s.indexOf("l") // => 2: Position des ersten Vorkommens des
// Buchstabens "l".
s.indexOf("l", 3) // => 3: Position des ersten "l" auf oder nach
// Indexposition 3.
s.indexOf("zz") // => -1: s enthält nicht die Teilzeichenfolge "zz".
s.lastIndexOf("l") // => 10: Position des letzten Vorkommens des
// Buchstabens "l".
// Boolesche Suchfunktionen in ES6 und höher:
s.startsWith("Hell") // => true: Der String beginnt mit diesen Zeichen.
s.endsWith("!") // => false: s endet nicht mit einem "!".
s.includes("or") // => true: s enthält die Teilzeichenfolge "or".
// Modifizierte Versionen eines Strings erzeugen:
s.replace("llo", "ya") // => "Heya, world"
s.toLowerCase() // => "hello, world"
s.toUpperCase() // => "HELLO, WORLD"
s.normalize() // Unicode-NFC-Normalisierung: ES6.
s.normalize("NFD") // NFD-Normalisierung. Auch "NFKC", "NFKD".
// Überprüfung einzelner (16-Bit-)Zeichen eines Strings:
s.charAt(0) // => "H": Das erste Zeichen.
s.charAt(s.length-1) // => "d": Das letzte Zeichen.