1

我有一条路径,我试图在最后一个 / 之后弹出所有内容,因此在这种情况下为“文件夹”,将新路径保留为 C://local/drive/folder/。

我尝试使用 pop() 弹出最后一个 /,但无法使路径的第一部分成为新路径:

var path = C://local/drive/folder/folder
var newpath = path.split("/").pop();
var newpath = newpath[0]; //should be C://local/drive/folder/

我怎样才能做到这一点?

4

5 回答 5

4

使用.slice()代替pop()

var newpath = path.split("/").slice(0, -1).join("/");

如果您还需要最后一部分,则只需使用.pop(),但首先将 Array 存储在单独的变量中。

var parts = path.split("/");

var last = parts.pop();
var first = parts.join("/");

现在last拥有最后一部分,并且first拥有最后一部分之前的所有内容。


另一种解决方案是.lastIndexOf()在字符串上使用。

var idx = path.lastIndexOf("/");

var first = path.slice(0, idx);
var last = path.slice(idx + 1);
于 2012-12-01T23:38:09.240 回答
2

只需将最后一条语句替换为:

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

关于Array.pop: 每次调用该pop方法时,它都会返回最后一个元素,并将其从数组中删除

于 2012-12-01T23:45:04.823 回答
1

也可以使用正则表达式:

function stripLastPiece(path) {
    var matches = path.match(/^(.*\/)[^\/]+$/);
    if (matches) {
        return(matches[1]);
    }
    return(path);
}

工作示例:http: //jsfiddle.net/jfriend00/av7Mn/

于 2012-12-01T23:41:03.220 回答
1

如果要获取数组的第一部分。

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

这忽略了空格之后的所有内容。

于 2016-06-09T10:53:17.840 回答
0
var foo = "C://local/drive/folder/folder";
foo.match(/(.+\/)[^\/]+$/);

会导致:["C://local/drive/folder/folder", "C://local/drive/folder/"]

虽然我更喜欢 user1689607 的回答

于 2012-12-01T23:40:35.700 回答