0

我正在尝试返回路径中的最后一个目录。例如,对于以下路径,我希望返回“第三个”。我的路径总是以没有斜线开始,以斜线结束。如果路径为空,我希望返回一个空字符串。

第一第二第三/

下面是我的尝试。有什么更好的方法推荐吗?

var path='first/second/third/';
path1=path.substring(0, path.length - 1);
path2=path1.substr(path1.lastIndexOf('/') + 1);
4

7 回答 7

2

分裂你的成功之路

var parts = path.split("/");
var last = parts[parts.length-1];

当然,您需要决定在fist/path/to/lastfirst/path/to/last/. 您的用例可能需要处理其中一个或两个。

于 2013-10-11T17:20:26.310 回答
2
var path='first/second/third/';
var path2 = path.split('/');
path2 = path2[path2.length-2];

-2因为最后一个是空的,因为最后一个斜杠。

于 2013-10-11T17:21:02.120 回答
2

实现这种事情的更轻松的方法:)

// Remove trailing slash and split by slashes, then pick the last occurrence
path = path.replace(/\/$/, "").split("/").pop();
于 2013-10-11T17:21:14.417 回答
0

尝试拆分路径,如果最后一个目录未定义(因为路径为空),则使用空字符串:

var path='first/second/third/';
var parts = path.split("/");
var path1 = parts[parts.length - 2] || ""
于 2013-10-11T17:20:51.360 回答
0

也许拆分在这里会是更好/更清洁的选择..

var directories = path.split("/");
var lastDir     = directories[directories.length - 1]
于 2013-10-11T17:20:53.093 回答
0

这是一个函数segment,它将接受一个类似字符串的 url 并返回它的特定部分(使用 1 计数,而不是 0)。因此,segment(str, 1)返回firstsegment(str, 3)返回third。它还包括一个trim函数来去除讨厌的前面或后面的斜杠,这会导致段数组中的空项目......但也许你想要那些,所以在这种情况下只需return str.split...在段函数中使用。

var trim = function (str, charset) {
    charset = charset || "\s";

    var regex = new RegExp("^[" + charset + "]+|[" + charset + "]+$", "g")
    return str.replace(regex, "");
};

var segment = function (str, offset) {
    return trim(str, '/').split('/')[offset - 1];
}
于 2013-10-11T17:38:49.307 回答
0

尝试这个,

var path='first/second/third/';
path.match(/([^\/]*)\/*$/)[1]; // return third
于 2013-10-11T17:29:16.357 回答