JS: Optimierteste Methode zum Entfernen eines Dateinamens aus einem Pfad in einer Zeichenfolge?
Lesezeit: 3 Minuten
DaVince
Ich habe Zeichenfolgen wie folgt formatiert:
path/to/a/filename.txt
Jetzt möchte ich einige String-Manipulationen vornehmen, die es mir ermöglichen, den Teil “filename.txt” sehr effizient aus diesem Code zu entfernen. Mit anderen Worten, ich möchte, dass meine Zeichenfolge so wird:
path/to/a/
Was ist der effizienteste Weg, dies zu tun? Derzeit teile ich die Saite und verbinde die einzelnen Elemente bis auf das letzte wieder, aber ich habe das Gefühl, dass dies eine wirklich, WIRKLICH ineffiziente Methode ist. Hier ist mein aktueller, ineffizienter Code:
res.getPath = function(file)
{
var elem = file.split("https://stackoverflow.com/");
var str = "";
for (var i = 0; i < elem.length-1; i++)
str += elem[i] + "https://stackoverflow.com/";
return str;
}
Sehr ähnlich: stackoverflow.com/questions/2161511
– Gumbo
2. Februar 2010 um 20:12 Uhr
split ist eigentlich sehr schnell, aber definitiv nicht das am schnellsten Weg…
– D’Arcy Rittich
2. Februar 2010 um 20:15 Uhr
Verwenden Sie lastIndexOf(), um die Position des letzten Schrägstrichs zu finden, und erhalten Sie den Teil vor dem Schrägstrich mit substring().
Beachten Sie, dass dies bei URLs wie dieser eine Zeichenfolge mit dem Dateinamen zurückgibt: http://example.com/index.php?p=about/location oder http://ex.co/#/14185
– Kroltan
2. Januar 2014 um 7:39 Uhr
Dies funktioniert nicht mit Pfad in Form von /www/test
– André Fiedler
25. Juli 2014 um 11:27 Uhr
Wenn ich die letzten beiden Indizes entfernen möchte, was kann ich dann tun? dh; Ich muss sowohl Branch als auch Index aus entfernen localhost:2698/Zweig/Index
– Metapher
31. Mai 2016 um 12:22 Uhr
sieht so aus, als wäre es ein Pfad zu einer Datei, keine URL
Wenn hier ein Dateiname aus einem Datei-Upload-Formular verarbeitet werden soll, empfiehlt die HTML5-Spezifikation den folgenden Code:
function extractFilename(path) {
if (path.substr(0, 12) == "C:\\fakepath\\")
return path.substr(12); // modern browser
var x;
x = path.lastIndexOf("https://stackoverflow.com/");
if (x >= 0) // Unix-based path
return path.substr(x+1);
x = path.lastIndexOf('\\');
if (x >= 0) // Windows-based path
return path.substr(x+1);
return path; // just the filename
}
Sehr ähnlich: stackoverflow.com/questions/2161511
– Gumbo
2. Februar 2010 um 20:12 Uhr
split
ist eigentlich sehr schnell, aber definitiv nicht das am schnellsten Weg…– D’Arcy Rittich
2. Februar 2010 um 20:15 Uhr