我正在尝试返回路径中的最后一个目录。例如,对于以下路径,我希望返回“第三个”。我的路径总是以没有斜线开始,以斜线结束。如果路径为空,我希望返回一个空字符串。
第一第二第三/
下面是我的尝试。有什么更好的方法推荐吗?
var path='first/second/third/';
path1=path.substring(0, path.length - 1);
path2=path1.substr(path1.lastIndexOf('/') + 1);
我正在尝试返回路径中的最后一个目录。例如,对于以下路径,我希望返回“第三个”。我的路径总是以没有斜线开始,以斜线结束。如果路径为空,我希望返回一个空字符串。
第一第二第三/
下面是我的尝试。有什么更好的方法推荐吗?
var path='first/second/third/';
path1=path.substring(0, path.length - 1);
path2=path1.substr(path1.lastIndexOf('/') + 1);
分裂你的成功之路
var parts = path.split("/");
var last = parts[parts.length-1];
当然,您需要决定在fist/path/to/last
与first/path/to/last/
. 您的用例可能需要处理其中一个或两个。
var path='first/second/third/';
var path2 = path.split('/');
path2 = path2[path2.length-2];
-2
因为最后一个是空的,因为最后一个斜杠。
实现这种事情的更轻松的方法:)
// Remove trailing slash and split by slashes, then pick the last occurrence
path = path.replace(/\/$/, "").split("/").pop();
尝试拆分路径,如果最后一个目录未定义(因为路径为空),则使用空字符串:
var path='first/second/third/';
var parts = path.split("/");
var path1 = parts[parts.length - 2] || ""
也许拆分在这里会是更好/更清洁的选择..
var directories = path.split("/");
var lastDir = directories[directories.length - 1]
这是一个函数segment
,它将接受一个类似字符串的 url 并返回它的特定部分(使用 1 计数,而不是 0)。因此,segment(str, 1)
返回first
和segment(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];
}
尝试这个,
var path='first/second/third/';
path.match(/([^\/]*)\/*$/)[1]; // return third