Определенная переменная может содержать относительный путь или абсолютный путь. В любом случае мне нужно иметь возможность извлечь имя файла из переменной:
http://www.somesite.com/dir1/dir2/filename.gif /dir1/dir2/filename.gif
Структура каталогов также произвольна. Таким образом, в основном, учитывая любой из приведенных выше URL (со структурой каталогов arbirtrary), мне нужно вытащить «filename.gif». Заранее спасибо
var index = yourstring.lastIndexOf("/") + 1; var filename = yourstring.substr(index);
Короткий путь
var filename = window.location.href.substr(window.location.href.lastIndexOf("/")+1);
var filename = url.match(/.*\/(.*)$/)[1];
var filename= url.split('/').pop()
Я бы использовал регулярное выражение.
[^/]*$
Выбирает все после последней косой черты до конца. Вы можете расширить его, чтобы выбрать расширение отдельно:
/([^/]*?)(\.[^\./]*)?$
var path = window.location.pathname; var filename = path.match(/.*\/([^/]+)\.([^?]+)/i)[1];
Используйте это в том случае, если вы не хотите, чтобы строка запроса была частью вашего имени файла (что вы, вероятно, не).
var URL = window.location.pathname; // Gets page name var page = URL.substring(URL.lastIndexOf('/') + 1); alert(page);
Я решил эту проблему следующим образом:
var URL = window.location.pathname; // Gets page name var page = URL.substring(URL.lastIndexOf('/') + 1); // then display your filename to console console.info(page)
Для ваших примеров, поиск по подстроке, вероятно, будет вашим лучшим вариантом.
Однако, если ваши URI достаточно сложны, вы можете попробовать parseUri Стивена Левитана:
parseUri
parseUri(uri).file;
У него 2 режима, и у каждого есть свои причуды, поэтому обязательно ознакомьтесь с демонстрацией .
// Extract filename from current page. var filePath = window.location.pathname; var fileName = filePath.substr(urlPath.lastIndexOf("/") + 1);