Start · Sprachen · JavaScript · Referenz · String.prototype.startsWith()

String.prototype.startsWith()

Methode

Prüft, ob ein String mit den Zeichen eines angegebenen Strings beginnt, optional ab einer bestimmten Position, und gibt <code>true</code> oder <code>false</code> zurück.

seit JavaScript ES2015 Kategorie: method-property

Signatur

String.prototype.startsWith(searchString, position)

Beschreibung

Die Methode startsWith() prüft, ob ein String mit einer bestimmten Zeichenfolge beginnt. Sie gibt true zurück, wenn das zutrifft, sonst false. Groß- und Kleinschreibung werden dabei unterschieden: "Hallo".startsWith("hallo") liefert false.

Mit dem optionalen Parameter position legen Sie fest, ab welchem Index verglichen werden soll. Damit prüfen Sie, ob ein Präfix an einer bestimmten Stelle im String steht, ohne vorher einen Teilstring mit slice() herauszuschneiden.

Typische Einsatzfälle sind das Prüfen von URL-Schemata (https://), Dateipfaden, Befehlspräfixen (z. B. / in Chat-Befehlen), Schlüsselnamen mit Namensraum-Präfix oder Ländervorwahlen. Im Vergleich zu indexOf(x) === 0 oder einem regulären Ausdruck wie /^x/ ist startsWith() besser lesbar und macht die Absicht sofort klar.

Parameter

Name Typ Default Beschreibung
$searchString Pflicht string Die Zeichenfolge, nach der am Anfang gesucht wird. Andere Werte werden in einen String umgewandelt (z. B. undefined zu "undefined"). Ein regulärer Ausdruck ist nicht erlaubt und löst einen TypeError aus.
$position number 0 Startindex, ab dem searchString erwartet wird. Werte unter 0 werden als 0 behandelt, Werte über der Länge als str.length. Nicht ganzzahlige Werte werden abgeschnitten.

Rückgabewert

Typ
boolean
Beschreibung
true, wenn der String (ab position) mit searchString beginnt, sonst false. Bei leerem searchString immer true.

Beispiele

Einfache Präfix-Prüfung

const satz = "Guten Morgen, Welt!";

console.log(satz.startsWith("Guten"));
console.log(satz.startsWith("guten")); // Groß-/Kleinschreibung zählt
console.log(satz.startsWith("Morgen", 6)); // ab Index 6
true false true

Sichere URLs herausfiltern

const links = [
  "https://example.com",
  "http://alt.example.org",
  "ftp://files.example.net",
  "https://programmierung.net"
];

const sicher = links.filter((url) => url.startsWith("https://"));
console.log(sicher);
[ 'https://example.com', 'https://programmierung.net' ]

Chat-Befehle erkennen

const verarbeiteNachricht = (text) => {
  if (!text.startsWith("/")) {
    return `Nachricht: ${text}`;
  }
  const [befehl, ...args] = text.slice(1).split(" ");
  return `Befehl "${befehl}" mit Argumenten: ${args.join(", ")}`;
};

console.log(verarbeiteNachricht("Hallo zusammen"));
console.log(verarbeiteNachricht("/kick max grund"));
Nachricht: Hallo zusammen Befehl "kick" mit Argumenten: max, grund

Groß-/Kleinschreibung ignorieren

const dateiname = "README.md";
const praefix = "readme";

const treffer = dateiname.toLowerCase().startsWith(praefix.toLowerCase());
console.log(treffer);
true

// Wichtig · Fallstricke

  • Keine regulären Ausdrücke: \"abc\".startsWith(/a/) wirft einen TypeError. Für Muster nutzen Sie /^muster/.test(str).
  • Groß-/Kleinschreibung: Der Vergleich unterscheidet immer zwischen Groß- und Kleinbuchstaben. Normalisieren Sie beide Seiten bei Bedarf mit toLowerCase() oder toLocaleLowerCase().
  • Leerer Suchstring: str.startsWith(\"\") liefert immer true. Das kann bei Benutzereingaben unerwartet sein.
  • Typumwandlung: str.startsWith() ohne Argument sucht nach \"undefined\", nicht nach einem leeren String.
  • Unicode: Verglichen wird auf Ebene der UTF-16-Codeeinheiten. Unterschiedlich normalisierte Zeichen (z. B. \"é\" als ein Zeichen gegenüber \"e\" + \"\\u0301\") passen nicht zusammen. Gleichen Sie das vorher mit normalize() an.
  • Kompatibilität: Wird von allen modernen Browsern und von Node.js 4+ unterstützt. Der Internet Explorer kennt die Methode nicht, dort ist ein Polyfill nötig.