我正在尝试返回路径中的最后一个目录。例如,对于以下路径,我希望返回“第三”。我的路径总是从没有斜线开始,以斜线结束。如果路径为空,我希望返回一个空字符串。
第一/第二/第三/
以下是我的尝试。有关更好方法的任何建议吗?
var path='first/second/third/';
path1=path.substring(0, path.length - 1);
path2=path1.substr(path1.lastIndexOf('/') + 1);
答案 0 :(得分:2)
分道扬»
var parts = path.split("/");
var last = parts[parts.length-1];
当然,您需要决定fist/path/to/last
与first/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)
返回first
,segment(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];
}