Javascript String slice()

string.slice() schneidet Teilstücke von Strings heraus und schreibt das Teilstück in einen neuen String. Strings in JavaScript sind immutable (unveränderlich). Ein String kann also nicht direkt verändert werden, sondern um einen Teil aus einem String zu entfernen, muss ein neuer String erzeugt werden.

Javascript string slice

String slice »spaltet« einen Teilstring ab

string.slice(v,b) extrahiert einen Teil aus einem String und weist diesen Substring einem neuen String zu. Im Argument stehen v = von (inklusive) und b = bis (exklusive).

              0123456789012345678901234567890123456
                           ▼      ▼
const strg = "Paul Pauline Apostel Paulus Postpaket";
const ausschnitt = strg.slice(13, 20);
console.log (ausschnitt);
[LOG] 

simpleString.slice(13, 20) schneidet die Zeichenfolge beginnend bei Position 13 bis inklusive Position 19 aus und weist die Zeichenfolge der Variablen ausschnitt zu.

Das exklusive Ende bei String- (und auch Array-Methoden) ist ein fundamentales Design-Prinzip von vielen Programmiersprachen, nicht nur von JavaScript). Die Idee dahinter ist das »halboffene Intervall« [start, end), dass die Berechnung der Länge so schön einfach macht. Da ist kein extra +1 nötig.

const ausschnitt = strg.slice(13, 20);
const länge = 20 - 13; 

Substrings lassen sich so einfach scheibchenweise miteinander verketten, ohne dass sie sich überschneiden, Iterationen sind einfacher.

Das Äquivalent zu string slice für Arrays ist array.slice(). Für Arrays gilt dann dasselbe halboffene Interval und man merkt sich für slice, splice, substring einfach [inklusiv, exklusiv).

Es gibt kein String.splice()

splice() ist eine Array-Methode (Array.splice()), keine String-Methode. Um einen String zu ändern, wird ein neuer String mit string.slice erzeugt.

             0123456789
const str = "Nebensache";

// Zeichen 1–5 entfernen (Index 1 bis 5)
const result = str.slice(1, 5) + str.slice(9);

console.log(result); // "ebene"

Um in einem String etwas einzufügen, würde die Zeichenfolge ebenfalls mit string.slice() aufgespalten und mittels String-Konkatenation etwas hinzugefügt.

              0123456789
const wort = "NACHLAUFEN";
const neu = "B" + wort.slice(1,8);
console.log ("neu", neu) // Bachlauf

string substr () – Teilstring mit Anzahl von Zeichen

string.substr(start,count) gibt ein Fragment ab Position start (inklusive) mit einer Länge von count Zeichen zurück.

                      01234567890123456789012
const simpleString = "https://www.wisotop.de/";
const fragment = simpleString.substr(12, 7); // wisotop

substr gilt heute als veraltet / deprecated. Die Methode funktioniert zwar noch in allen Browsern, aber moderne Entwickler nutzen slice () oder substring () statt substr () – klar: substring arbeitet [inklusiv, exklusiv).

string substring () – Teilstring [inklusiv, exklusiv)

substring(start,end) schneidet ein Fragment ab Position start (inklusive) bis zur Position end (exklusiv) aus einem String.

let simpleString = "http://www.wisotop.de/";
let fragment = simpleString.substring(11, 18);

substr und substring wirken auf den ersten Blick sehr ähnlich. Das zweite Argument macht den Unterschied:

  • Das zweite Argument von substr(start, count) ist die maximale Länge des Rückgabewertes.
  • Das zweite Argument von substring(start, end) ist der (exklusive) Index, an dem das Fragment endet.
0123456789012345678901234567890123456
          |         |         |
ICH BIN EINE ZEICHENKETTE ODER EIN STRING substr(13,20)
ICH BIN EINE ZEICHENKETTE ODER EIN STRING substring(13,20)
[Log] ZEICHENKETTE ODER EI
[Log] ZEICHEN

substring(start, end) wird heute noch viel gesehen, aber: slice() ist fast immer die bessere Wahl wegen seiner potentiell negativen Indizes.

Suchen auf mediaevent.de