Читать книгу JavaScript – Das Handbuch für die Praxis - David Flanagan - Страница 43
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.
s.charCodeAt(0) // => 72: 16-Bit-Zahl an der angegebenen Position.
s.codePointAt(0) // => 72: ES6, funktioniert mit Codepoints > 16 Bit.
// Funktionen zur Auffüllung von Strings in ES2017:
"x".padStart(3) // => " x": String auf eine Länge von 3 durch links
// hinzugefügte Leerzeichen erweitern.
"x".padEnd(3) // => "x ": String auf eine Länge von 3 durch rechts
// hinzugefügte Leerzeichen erweitern.
"x".padStart(3, "*") // => "**x": String auf eine Länge von 3 durch links
// hinzugefügte Sternchen erweitern.
"x".padEnd(3, "-") // => "x--": String auf eine Länge von 3 durch rechts
// hinzugefügte Bindestriche erweitern.
// Funktionen zur Beschneidung von Leerzeichen. trim() ist ES5, andere Funktionen
// sind ES2019:
" test ".trim() // => "test": Leerzeichen am Anfang und am Ende entfernen.
" test ".trimStart() // => "test ": Leerzeichen links entfernen. Auch trimLeft.
" test ".trimEnd() // => "test": Leerzeichen rechts entfernen. Auch trimRight.
// Verschiedene String-Methoden:
s.concat("!") // => "Hello, world!": Oder benutzen Sie stattdessen
// einfach den +-Operator.
"<>".repeat(5) // => "<><><><><>": n Kopien verketten. ES6.
Denken Sie daran, dass Strings in JavaScript unveränderbar sind. Methoden wie replace() und toUpperCase() liefern neue Strings – den String, auf dem sie aufgerufen werden, verändern sie nicht.
Strings können auch wie schreibgeschützte Arrays behandelt werden, und Sie können auf einzelne Zeichen (16-Bit-Werte) eines Strings auch mit eckigen Klammern anstelle der charAt()-Methode zugreifen:
let s = "hello, world";
s[0] // => "h"
s[s.length-1] // => "d"