2013-10-11 4 views
0

Я пытаюсь вернуть последний каталог в путь. Например, для следующего пути я хочу вернуть «третий». Мои пути всегда начинаются без косых черт и заканчиваются косой чертой. Если путь пуст, я хочу вернуть пустую строку.Возврат последнего каталога по пути

первый/второй/третий/

Ниже моя попытка. Любые рекомендации по лучшему пути?

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

ответ

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

-2 потому что последний пуст из-за последней косой черты.

2

разделить свой путь к успеху

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

Конечно, вам нужно решить, что делать на fist/path/to/last VS. first/path/to/last/. Возможно, вам потребуется обработать один или оба.

0

разделите путь, и если последний каталог не определен (потому что путь пуст) используется пустая строка:

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

Может быть раскол был бы лучше/уборщик выбор здесь ..

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

Зажигалка способ достижения такой вещи :)

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

Попробуйте это,

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

Вот функция 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]; 
} 
Смежные вопросы