Gibt es eine Möglichkeit, den letzten Wert (basierend auf dem Symbol '\') von einem vollständigen Pfad abzurufen?
Beispiel:
C:\Documents and Settings\img\recycled log.jpg
In diesem Fall möchte ich nur recycled log.jpg
den vollständigen Pfad in JavaScript ermitteln.
javascript
Jin Yong
quelle
quelle
replace
ist viel langsamer alssubstr
, die in Verbindung verwendet werden kann , mitlastIndexOf('/')+1
: jsperf.com/replace-vs-substringFiddle
, obwohl es für `\\` gut funktioniert."/var/drop/foo/boo/moo.js".replace(/^.*[\\\/]/, '')
Erträgemoo.js
Nur aus Gründen der Leistung habe ich alle hier gegebenen Antworten getestet:
Und der Gewinner ist die Antwort im Split- und Pop- Stil: Danke an Bobince !
quelle
path.split(/.*[\/|\\]/)[1];
In Node.js können Sie das Analysemodul von Path verwenden ...
quelle
basename
Funktion verwenden:path.basename(file)
Von welcher Plattform kommt der Weg? Windows-Pfade unterscheiden sich von POSIX-Pfaden unterscheiden sich von Mac OS 9-Pfaden unterscheiden sich von RISC-Betriebssystempfaden unterscheiden sich ...
Wenn es sich um eine Web-App handelt, bei der der Dateiname von verschiedenen Plattformen stammen kann, gibt es keine Lösung. Es ist jedoch sinnvoll, sowohl '\' (Windows) als auch '/' (Linux / Unix / Mac und auch eine Alternative unter Windows) als Pfadtrennzeichen zu verwenden. Hier ist eine Nicht-RegExp-Version für zusätzlichen Spaß:
quelle
var path = '\\Dir2\\Sub1\\SubSub1'; //path = '/Dir2/Sub1/SubSub1'; path = path.split('\\').length > 1 ? path.split('\\').slice(0, -1).join('\\') : path; path = path.split('/').length > 1 ? path.split('/').slice(0, -1).join('/') : path; console.log(path);
Ihre Lösung schützt nicht vor einer leeren Zeichenfolge als Eingabe. In diesem Fall schlägt es mit fehl
TypeError: /([^(\\|\/|\:)]+)$/.exec(fullPath) has no properties
.Bobince, hier ist eine Version von Nickfs, die DOS-, POSIX- und HFS-Pfadbegrenzer (und leere Zeichenfolgen) verarbeitet:
quelle
In der folgenden Zeile des JavaScript-Codes erhalten Sie den Dateinamen.
quelle
Nicht prägnanter als die Antwort von Nickf , aber diese "extrahiert" die Antwort direkt, anstatt unerwünschte Teile durch eine leere Zeichenfolge zu ersetzen:
quelle
Eine Frage mit der Frage "Dateinamen ohne Erweiterung abrufen" finden Sie hier, aber keine Lösung dafür. Hier ist die Lösung, die von Bobbies Lösung modifiziert wurde.
quelle
Noch einer
Hier hat split einen regulären Ausdruck mit einer Zeichenklasse.
Die beiden Zeichen müssen mit '\' maskiert werden.
Oder verwenden Sie das Array zum Teilen
Auf diese Weise können bei Bedarf mehr Trennzeichen dynamisch in ein Array verschoben werden.
Wenn dies
fullPath
explizit durch eine Zeichenfolge in Ihrem Code festgelegt wird, muss der Backslash vermieden werden !Mögen
"C:\\Documents and Settings\\img\\recycled log.jpg"
quelle
Ich benutze:
Es ersetzt das letzte,
\
sodass es auch mit Ordnern funktioniert.quelle
quelle
Die vollständige Antwort lautet:
quelle
Kleine Funktion, die Sie in Ihr Projekt aufnehmen müssen, um den Dateinamen aus einem vollständigen Pfad für Windows sowie aus absoluten GNU / Linux- und UNIX-Pfaden zu ermitteln.
quelle
quelle
Erfolgreiches Skript für Ihre Frage, vollständiger Test
quelle
Diese Lösung ist viel einfacher und allgemeiner, sowohl für 'Dateiname' als auch für 'Pfad'.
quelle
quelle
var file_name = file_path.substring(file_path.lastIndexOf('/'));
quelle