我有一条路径,我试图在最后一个/所以后面弹出所有内容,在这种情况下是'文件夹',将新路径保留为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/
我该如何做到这一点?
答案 0 :(得分:4)
使用.slice()
代替pop()
var newpath = path.split("/").slice(0, -1).join("/");
如果你还需要最后一部分,那么只需使用.pop()
,但首先将数组存储在一个单独的变量中。
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);
答案 1 :(得分: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
方法时,将返回最后一个元素,并且 将其从数组中删除。
答案 2 :(得分:1)
还可以使用正则表达式:
function stripLastPiece(path) {
var matches = path.match(/^(.*\/)[^\/]+$/);
if (matches) {
return(matches[1]);
}
return(path);
}
答案 3 :(得分:1)
如果你想获得数组的第一部分。
var firstWord = fullnamesaved.split("")。shift();
这无视空间之后的所有事情。
答案 4 :(得分:0)
var foo = "C://local/drive/folder/folder";
foo.match(/(.+\/)[^\/]+$/);
会导致:["C://local/drive/folder/folder", "C://local/drive/folder/"]
虽然我更喜欢user1689607的回答