Advanced Strings & Builtins 🔤
Strings haben — wie Arrays — viele builtin Funktionen und Properties, die häufige Aufgaben erleichtern. Außerdem gibt es eine schickere Schreibweise für Strings, die dynamisch aus Daten zusammengebaut werden: Template Strings.
Template Strings
Bisher haben wir Strings immer nur fest aufgeschrieben und ausgegeben. Häufig will man aber Strings dynamisch aus Daten zusammenbauen — z.B. um in der Konsole statt mehrerer Zeilen einen ganzen Satz auszugeben.
Mit dem +-Operator geht das, wird aber schnell unleserlich:
const greeting = "Hallo " + name + ", du bist " + age + " Jahre alt."
Eleganter: Template Strings. Sie werden wie normale Strings geschrieben, mit zwei Änderungen:
- Statt
"..."werden sie mit Backticks`...`geschrieben - Mitten im String können andere Werte eingesetzt werden, indem man sie mit
${...}umschließt
Special Characters & Escaping
Es gibt ein paar besondere Zeichen, die du in deine Strings einbauen kannst —
jeweils mit einem vorangestellten Backslash \:
\nfür einen Zeilenumbruch\"für ein"(in einem mit"..."umschlossenen String)\\für einen echten Backslash\
Builtin String Methods
In JavaScript gibt es eine ganze Menge sogenannter builtin Methods. Eine
Method ist eine spezielle Art von Funktion, die “auf einem Wert liegt” und auf
diesen zugreift. Das klingt sehr abstrakt, heißt aber nur: man kann auf manchen
Werten mit einem . getrennt auf bestimmte nützliche Dinge zugreifen.
Zusätzlich zu Methods gibt es auch builtin Properties. Diese funktionieren genauso, sind aber keine Funktionen, sondern direkt feste Werte.
.length
Strings haben — wie Arrays — eine .length-Property, die die Anzahl der Zeichen
als Zahl enthält:
Suchen in Strings
.startsWith(s)—true, wenn der String mitsanfängt.endsWith(s)—true, wenn er mitsaufhört.includes(s)—true, wennsirgendwo enthalten ist.indexOf(s)— Position vons, oder-1wenn nicht enthalten
.substring(start, end) — Ausschnitt
.substring schneidet einen Teil aus einem String aus — von Index start
(inklusive) bis Index end (exklusive). Wie bei Arrays mit .slice.
Übung 1 🎯 — Anrede kürzen
Schreib eine Funktion removeSalutation(name) und exportiere sie. Sie soll aus
einem vollen Namen die Anrede wegkürzen und das Ergebnis returnen. Das heißt:
wenn der String mit "Hr. " oder "Fr. " anfängt, soll diese Anrede weggekürzt
werden, sodass nur der Name selbst übrig bleibt. Falls nicht, soll der String
unberührt zurückgegeben werden.
Deine Funktion sollte sich so verhalten:
"Fr. Black Widow"wird zu"Black Widow""Hr. Hulk"wird zu"Hulk""Thor"wird zu"Thor"
Übung 2 🎯 — Entfernen von beliebigem String
Schreib eine exportierte Funktion removeString(subject, needle), die zwei
Strings erwartet. Sie soll im ersten String alle Vorkommnisse des zweiten Strings
entfernen und den resultierenden String zurückgeben. Benutze dabei nur die
Builtins, die in diesem Kapitel beschrieben wurden — keine Regex.
Deine Funktion sollte sich folgendermaßen verhalten:
("FooBarFoo", "Foo")wird zu"Bar"("Man darf auf der Akademie nicht Geschi sagen", "Geschi")wird zu"Man darf auf der Akademie nicht sagen"(beachte: zwei Leerzeichen, da “Geschi” raus ist)("Info ist der beste Kurs", "Mathe")wird zu"Info ist der beste Kurs"
💡 Tipp anzeigen
- Mit
.indexOffindest du die Position des nächsten Vorkommens. - Mit
.substringschneidest du den Teil davor und den Teil danach raus und klebst sie zusammen. - Eine
while-Schleife wiederholt das, bis nichts mehr gefunden wird (.indexOfgibt dann-1zurück).
Geschafft! 🚀
Du beherrschst jetzt:
- Template Strings mit
`und${...} - Sonderzeichen mit
\n,\",\\ .lengthfür die String-Länge.startsWith,.endsWith,.includes,.indexOffür die Suche.substring(start, end)für Ausschnitte
Als Nächstes: Objects →