Co najmniej trzy sposoby:
Wyrażenie regularne:
var result = /[^/]*$/.exec("foo/bar/test.html")[0];
... który mówi „pobierz serię znaków niezawierających ukośnika” ( [^/]*) na końcu ciągu ( $). Następnie pobiera dopasowane znaki z zwróconego obiektu dopasowania przez indeksowanie do niego ( [0]); w dopasowanym obiekcie pierwszym wpisem jest cały dopasowany ciąg. Nie ma potrzeby grup przechwytywania.
Przykład na żywo
Korzystanie lastIndexOfi substring:
var str = "foo/bar/test.html";
var n = str.lastIndexOf('/');
var result = str.substring(n + 1);
lastIndexOfrobi to, na co wygląda: znajduje indeks ostatniego wystąpienia znaku (cóż, łańcucha) w ciągu, zwracając -1, jeśli nie zostanie znaleziony. Dziewięć razy na dziesięć prawdopodobnie chcesz sprawdzić tę zwracaną wartość ( if (n !== -1)), ale w powyższym, ponieważ dodajemy do niej 1 i wywołujemy podciąg, w końcu robimy, str.substring(0)co po prostu zwraca ciąg.
Za pomocą Array#split
Sudhir i Tom Walters omawiają to tutaj i tutaj , ale tylko dla kompletności:
var parts = "foo/bar/test.html".split("/");
var result = parts[parts.length - 1]; // Or parts.pop();
split dzieli ciąg przy użyciu podanego separatora, zwracając tablicę.
Rozwiązanie lastIndexOf/ substringjest prawdopodobnie najbardziej wydajne (chociaż zawsze należy uważać, mówiąc cokolwiek o JavaScript i wydajności, ponieważ silniki różnią się tak radykalnie od siebie), ale jeśli nie robisz tego tysiące razy w pętli, nie nie ma znaczenia i będę dążyć do przejrzystości kodu.