Ответ 1
Используйте силу регулярного выражения:
var name = path.match(/([^\/]*)\/*$/)[1]
Обратите внимание, что это не последняя "папка" (которая не определена в вашем случае и в общем случае URL), а последний маркер пути.
В javascript/jquery задан путь к папке, например:
"http://www.blah/foo/bar/"
или
"http://www.blah/foo/bar" (this one doesn't have a slash in the end)
Как вы можете извлечь имя последней папки? В этом случае это будет "bar"
.
Есть ли простой способ встроенной функции?
Спасибо.
Используйте силу регулярного выражения:
var name = path.match(/([^\/]*)\/*$/)[1]
Обратите внимание, что это не последняя "папка" (которая не определена в вашем случае и в общем случае URL), а последний маркер пути.
Используйте регулярные выражения! или:
var arr = 'http://www.blah/foo/bar/'.split('/');
var last = arr[arr.length-1] || arr[arr.length-2];
это означает http://www.blah/foo/bar//// ': p (или сбой браузера)
var arr = 'http://www.blah/foo/bar/////'.split('/');
var last = (function trololol(i) {
return arr[i] || trololol(i-1);
})(arr.length-1);
var myString = "http://www.blah/foo/bar";
var pathElements = myString.replace(/\/$/, '').split('/');
var lastFolder = pathElements[pathElements.length - 1];
Это чистый JavaScript и не нужен jQuery.
Взгляните на это:
var lastFolder = location.href.split('/').filter(function(el) {
return el.trim().length > 0;
}).pop();
alert( location.href.split('/').filter(function(el) { return el.trim().length > 0; }).pop() );
alert( location.href );
var test = "http://www.blah/foo/bar/" ;
alert( test.split('/').filter(function(el) { return el.trim().length > 0; }).pop() );
Вы можете разбить строку на список и захватить последний элемент в списке с помощью функции.
function checkString(stringToCheck) {
var list1 = stringToCheck.split('/');
if (list1[list1.length - 1].length < 1) {
var item = list1[list1.length - 2]
} else {
var item = list1[list1.length - 1];
}
$('#results').append('Last Folder in '+stringToCheck+': <b>'+item+'</b><br>');
}
Оттуда вы можете найти последний действительный элемент.
Хотя это может быть не самый элегантный ответ, кажется, проще всего понять для кого-то, кто может не знать регулярных выражений.
Обновлен JSFiddle для отображения результатов.
var str = "...";
var segments = str.split("/");
var lastDir = (segments.length > 1) ? segments[segments.length - 2] : "";
Первый пример дает "bar". Второй пример дает "foo".
Если вы хотите игнорировать конечную косую черту и считать последний сегмент как папку, то небольшая настройка на @bdesham RegExp делает трюк:
var segments = str.replace(/\/+$/, '').split('/');
var lastDir = (segments.length > 0) ? segments[segments.length - 1] : "";
Простое регулярное выражение может выполнять задание
var s = "toto1/toto2/toto3toto1/totofinale/";
s.replace(/^.*\/([^\/]+\/)$/, "$1")