Wenn Sie eine Variable verarbeiten müssen, die den vollständigen Pfad enthält (z. B.: thePath = "http://stackoverflow.com/directory/subdirectory/filename.jpg"
) und Sie wollen nur "Dateiname" zurückgeben, können Sie verwenden:
theName = thePath.split("/").slice(-1).join().split(".").shift();
wird das Ergebnis sein theName == "Dateiname" ;
Um es auszuprobieren, schreiben Sie den folgenden Befehl in das Konsolenfenster Ihres Chrome-Debuggers: window.location.pathname.split("/").slice(-1).join().split(".").shift()
Wenn Sie nur den Dateinamen und seine Erweiterung verarbeiten müssen (z. B: theNameWithExt = "filename.jpg"
):
theName = theNameWithExt.split(".").shift();
wird das Ergebnis sein theName == "Dateiname" das gleiche wie oben;
Notes :
- Die erste ist etwas langsamer, weil sie mehr Leistung erbringt. Operationen durchführt; aber es funktioniert in beiden Fällen, d.h. es kann den den Dateinamen ohne Erweiterung aus einer gegebenen Zeichenkette, die einen Pfad oder einen Dateinamen mit ex enthält. Die zweite funktioniert nur, wenn die angegebene Variable einen Dateinamen mit ext enthält, wie filename.ext, ist aber etwas schneller.
- Beide Lösungen funktionieren sowohl für lokale als auch für Serverdateien;
Aber ich kann weder etwas über den Leistungsvergleich mit anderen Antworten noch über die Browser- oder Betriebssystemkompatibilität sagen.
Arbeitsausschnitt 1: der vollständige Pfad
var thePath = "http://stackoverflow.com/directory/subdirectory/filename.jpg";
theName = thePath.split("/").slice(-1).join().split(".").shift();
alert(theName);
Arbeitsausschnitt 2: der Dateiname mit Erweiterung
var theNameWithExt = "filename.jpg";
theName = theNameWithExt.split("/").slice(-1).join().split(".").shift();
alert(theName);
Arbeitsbeispiel 2: der Dateiname mit doppelter Erweiterung
var theNameWithExt = "filename.tar.gz";
theName = theNameWithExt.split("/").slice(-1).join().split(".").shift();
alert(theName);