CSS, HTML und Javascript mit {stil}

Javascript String search / test

Javascript String search, replace, match

indexOf() sucht eine einfache Zeichenkette im String und gibt die erste Position oder -1 zurück.

search() sucht ebenfalls eine Zeichenkette im String und gibt die erste Position oder -1 zurück, aber search() sucht auch mit einem regulären Ausdruck nach Variationen eines Suchmusters.

indexOf() sucht nach einer einfachen Zeichenkette. search() sucht auch nach Variationen einer Zeichenkette anhand von regulären Ausdrücken. Wenn nur eine einfache Zeichenkette gesucht wird, ist indexOf() schneller und kann die Suche zudem von einem bestimmten Index aus beginnen.

indexOf / lastIndexOf

Javascript indexOf(str [,index]) ermittelt die erste Position eines einfachen Strings innerhalb eines anderen Strings und sucht optional von einer Startposition index aus.

Gibt -1 zurück, wenn die Zeichenkette nicht gefunden wird.

                 // 0123456789012345678901234
var simpleString = "Ich bin eine Zeichenkette";

console.log ("indexOf 'eine' " + simpleString.indexOf("eine"));
console.log ("indexOf 'eine' ab Pos 10 " + simpleString.indexOf("eine",10));
console.log ("indexOf 'Wort' " + simpleString.indexOf("Wort"));
console.log ("lastIndexOf 'Zeichen' " + simpleString.indexOf("Zeichen"));
[Log] indexOf 'eine' 9 
[Log] indexOf 'eine' ab Pos 10 -1 
[Log] indexOf 'Wort' -1 
[Log] lastIndexOf 'Zeichen' 14 

lastIndexOf(str [,index]) findet die letzte Position einer einfachen Zeichenkette str und sucht optional von einer Startposition index aus.

Gibt -1 zurück, wenn der String str nicht gefunden wird.

search()

Javascript str.search(pattern) gibt die erste Fundstelle des Suchmusters (pattern) zurück, wenn str gefunden wird, und -1 sonst.

Bei einem einfachen String als Suchmuster / Pattern gibt es keine Möglichkeit, die Suche unabhängig von Klein-/Großschreibung durchzuführen oder nach Variationen zu suchen.

Anstelle eines einfachen Strings kann Javascript search() (genauso wie match()) mit einem regulären Ausdruck aufgerufen werden. Dann kann die Suche im Text Groß- und Kleinschreibung unterscheiden.

Ob Anzug oder Aufzug, Durchzug oder Einzug: Das Word "Zug" hat viele Bedeutungen und kann mit vielen Vorsilben bestückt werden.

// Suche mit einfachem String
var result = text.search ("Zug");

// Suche mit regulärem Ausdruck
var result = text.search (/Zug/i);

Reguläre Ausdrücke sehen schnell aus, als hätte die Katze die Tastatur in Beschlag genommen – aber für den Anfang reichen die einfachen Varianten.

Bei so einem einfachen Beispiel unterscheidet sich der reguläre Ausdruck vom einfachen String nur durch die Schrägstriche anstelle von Hochkommas. Den größeren Unterschied macht das i (case-insensitiv), das auch als Modifier des regulären Ausdrucks bezeichnet wird.

search () gibt -1 zurück, wenn der Suchstring nicht gefunden wird.

Bunte Badenixen baden im Wasser
var result = document.querySelector("#noword").innerHTML.search("Baum");
console.log ('result ' + result);
noresult -1

String-Suche im Vergleich

Da haben wir indexOf, search() und match() für die Suche nach einer Zeichenkette in einem String. Wo sind die Unterschiede?

Such-Methodemit Regex?ErgebnisKein Treffer
indexOf / lastIndexOfneinErste Position des Suchbegriffs-1
match()jaAlle Suchbegriffe als Arraynull
search()jaErste Position des Suchmusters-1

Neben den Such-Methoden des String-Objekts gibt es die Such-Methoden des Regex-Objekts.

Regex-SucheErgebnisKein Treffer
exec()Erste Position des Suchmustersnull
test()truefalse

Suchen im String mit exec(): Position aller Fundstellen

search() ist eine Methode des String-Objekts. Reguläre Objekte haben ebenfalls Methoden, die nach den Vorkommen von Zeichenketten in einem String suchen: exec() und test(). Die Methoden regulärer Ausdrücke werden auf dem regulären Ausdruck ausgeführt und ihr Argument ist der String.

exec() findet nur die erste Position eines Suchmusters im String und gibt entweder die Position oder null zurück, wenn kein Treffer gefunden wurde. Um die Position aller Fundstellen zu erhalten, muss der String in einer Schleife durchlaufen werden.

var regex = /zug/gi, result, indices = [];
while (result = regex.exec(str)) {
    indices.push("" + result.index);
}
console.log (indices);
Array (5)
0 "5"
1 "17"
2 "27"
3 "39"
4 "54"

Suchen und Ersetzen mit einem RegExp-Objekt funktioniert genauso wie mit der /…/-Syntax – nur eben mehr objektorientiert und mit den gewohnten Hochkommas.

exec(s) führt einen regulären Ausdruck auf einer Zeichenkette str aus und gibt detallierte Informationen zu den Treffern zurück.

regex.test() – Kommt das Suchmuster im String vor?

Die Methoden von strings – match(), replace(), search() haben einen Parameter gemeinsam – das Suchmuster – und sie werden über die Dot-Notation auf dem String aufgerufen:

     String --+   Methode   +-- Suchmuster
              |     |       |
var result = str.match("Pattern");
var result = str.repace("Pattern", "Ersetzung");

test() ist eine Methode des Regex-Objekts und wird auf dem Suchmuster aufgerufen.

test() ist die einfachste und schnellste Variante für die Suche nach einem Suchmuster (Pattern) in einem String. test(str) sucht den String str und gibt true zurück, wenn str gefunden wird, und false sonst.

var regex = /Zug/i;
 Suchmuster --+  Methode  +-- String
              |    |      |
var result = regex.test(text);
console.log ("Test result " + result);
Javascript String search, replace, match S T R I N G