返回路径中的最后一个目录

时间:2013-10-11 17:17:27

标签: javascript jquery

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

第一/第二/第三/

以下是我的尝试。有关更好方法的任何建议吗?

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

7 个答案:

答案 0 :(得分:2)

分道扬»

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

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

答案 1 :(得分:2)

var path='first/second/third/';
var path2 = path.split('/');
path2 = path2[path2.length-2];

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

答案 2 :(得分:1)

实现这种目标的更轻松的方式:)

// Remove trailing slash and split by slashes, then pick the last occurrence
path = path.replace(/\/$/, "").split("/").pop();

答案 3 :(得分:0)

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

var path='first/second/third/';
var parts = path.split("/");
var path1 = parts[parts.length - 2] || ""

答案 4 :(得分:0)

也许拆分会更好/更清洁选择..

var directories = path.split("/");
var lastDir     = directories[directories.length - 1]

答案 5 :(得分:0)

试试这个,

var path='first/second/third/';
path.match(/([^\/]*)\/*$/)[1]; // return third

答案 6 :(得分:0)

这是一个函数segment,它将获取类似字符串的url并返回其中的特定部分(使用1计数,而不是0)。因此,segment(str, 1)返回firstsegment(str, 3)返回third。它还包括一个trim函数来去除令人讨厌的前面或尾部斜杠,它会导致segment数组中的空项......但是你可能想要那些,所以在这种情况下只需在segment函数中使用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];
}