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 \:

  • \n fü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 mit s anfängt
  • .endsWith(s)true, wenn er mit s aufhört
  • .includes(s)true, wenn s irgendwo enthalten ist
  • .indexOf(s) — Position von s, oder -1 wenn 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 .indexOf findest du die Position des nächsten Vorkommens.
  • Mit .substring schneidest du den Teil davor und den Teil danach raus und klebst sie zusammen.
  • Eine while-Schleife wiederholt das, bis nichts mehr gefunden wird (.indexOf gibt dann -1 zurück).

Geschafft! 🚀

Du beherrschst jetzt:

  • Template Strings mit ` und ${...}
  • Sonderzeichen mit \n, \", \\
  • .length für die String-Länge
  • .startsWith, .endsWith, .includes, .indexOf für die Suche
  • .substring(start, end) für Ausschnitte

Als Nächstes: Objects →

Zurück zur Übersicht