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?

1
Maverick 2 Dez. 2012 im 03:35

5 Antworten

Beste Antwort

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);
4
I Hate Lazy 1 Dez. 2012 im 23:38

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/

1
jfriend00 1 Dez. 2012 im 23:41

Wenn Sie den ersten Teil des Arrays erhalten möchten.

Var firstWord = fullnamesaved.split ("") .shift ();

Dies ignoriert alle Dinge nach dem Raum.

1
user3429707 9 Juni 2016 im 10:53
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

0
GottZ 1 Dez. 2012 im 23:40

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 .

2
Rubens Mariuzzo 1 Dez. 2012 im 23:45