Ich habe einen Pfad und versuche, alles nach dem letzten / zu entfernen, also in diesem Fall 'Ordner', wobei der neue Pfad als C: // local / drive / folder / belassen wird.
Ich habe versucht, den letzten / mit pop () zu entfernen, aber der erste Teil des Pfads kann nicht zum neuen Pfad werden:
var path = C://local/drive/folder/folder
var newpath = path.split("/").pop();
var newpath = newpath[0]; //should be C://local/drive/folder/
Wie kann ich das erreichen?
5 Antworten
Verwenden Sie .slice()
anstelle von pop()
var newpath = path.split("/").slice(0, -1).join("/");
Wenn Sie auch den letzten Teil benötigen, verwenden Sie einfach .pop()
, speichern Sie das Array jedoch zuerst in einer separaten Variablen.
var parts = path.split("/");
var last = parts.pop();
var first = parts.join("/");
Jetzt hat last
den letzten Teil und first
hat alles vor dem letzten Teil.
Eine andere Lösung besteht darin, .lastIndexOf()
für die Zeichenfolge zu verwenden.
var idx = path.lastIndexOf("/");
var first = path.slice(0, idx);
var last = path.slice(idx + 1);
Könnte auch einen regulären Ausdruck verwenden:
function stripLastPiece(path) {
var matches = path.match(/^(.*\/)[^\/]+$/);
if (matches) {
return(matches[1]);
}
return(path);
}
Arbeitsbeispiel: http://jsfiddle.net/jfriend00/av7Mn/
Wenn Sie den ersten Teil des Arrays erhalten möchten.
Var firstWord = fullnamesaved.split ("") .shift ();
Dies ignoriert alle Dinge nach dem Raum.
var foo = "C://local/drive/folder/folder";
foo.match(/(.+\/)[^\/]+$/);
Würde ergeben zu: ["C://local/drive/folder/folder", "C://local/drive/folder/"]
Obwohl ich die Antwort von user1689607 bevorzugen würde
Ersetzen Sie einfach die letzte Aussage, um so zu sein:
var path = C://local/drive/folder/folder
path.split("/").pop(); // Discard the poped element.
var newpath = path.join("/"); // It will be C://local/drive/folder
Ein Hinweis zu Array.pop
: Jedes Mal, wenn Sie die pop
-Methode aufrufen, wird das letzte Element zurückgegeben und entfernt das Array .