Mindestens drei Möglichkeiten:
Ein regulärer Ausdruck:
var result = /[^/]*$/.exec("foo/bar/test.html")[0];
... mit der Aufschrift "Nimm die Reihe von Zeichen, die keinen Schrägstrich enthalten" ( [^/]*
) am Ende der Zeichenfolge ( $
). Anschließend werden die übereinstimmenden Zeichen aus dem zurückgegebenen Übereinstimmungsobjekt abgerufen, indem sie in das Objekt indiziert werden ( [0]
). In einem Übereinstimmungsobjekt ist der erste Eintrag die gesamte übereinstimmende Zeichenfolge. Keine Notwendigkeit für Erfassungsgruppen.
Live Beispiel
Verwenden von lastIndexOf
und substring
:
var str = "foo/bar/test.html";
var n = str.lastIndexOf('/');
var result = str.substring(n + 1);
lastIndexOf
macht, wie es sich anhört: Es findet den Index des letzten Vorkommens eines Zeichens (nun, Zeichenfolge) in einer Zeichenfolge und gibt -1 zurück, wenn es nicht gefunden wird. Neun von zehn Fällen möchten Sie wahrscheinlich diesen Rückgabewert ( if (n !== -1)
) überprüfen , aber da wir oben 1 hinzufügen und Teilzeichenfolge aufrufen, werden wir am Ende str.substring(0)
nur den String zurückgeben.
Verwenden von Array#split
Sudhir und Tom Walters haben dies hier und hier behandelt , aber der Vollständigkeit halber:
var parts = "foo/bar/test.html".split("/");
var result = parts[parts.length - 1]; // Or parts.pop();
split
teilt eine Zeichenfolge mit dem angegebenen Trennzeichen auf und gibt ein Array zurück.
Die lastIndexOf
/ substring
-Lösung ist wahrscheinlich die effizienteste (obwohl man immer vorsichtig sein muss, wenn man etwas über JavaScript und Leistung sagt, da sich die Engines so radikal voneinander unterscheiden), aber wenn Sie dies nicht tausende Male in einer Schleife tun, ist dies nicht der Fall Es spielt keine Rolle und ich würde mich um Klarheit des Codes bemühen.