Ответ 1
var index = yourstring.lastIndexOf("/") + 1;
var filename = yourstring.substr(index);
Определенная переменная может содержать относительный путь или абсолютный путь. В любом случае, мне нужно, чтобы вытащить имя файла из переменной:
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 path = window.location.pathname;
var filename = path.match(/.*\/([^/]+)\.([^?]+)/i)[1];
Используйте это в случае, если вы не хотите, чтобы строка запроса была частью вашего имени файла (чего вы, вероятно, нет).
var filename= url.split('/').pop()
var URL = window.location.pathname; // Gets page name
var page = URL.substring(URL.lastIndexOf('/') + 1);
alert(page);
// Extract filename from current page.
var filePath = window.location.pathname;
var fileName = filePath.substr(urlPath.lastIndexOf("/") + 1);
Для ваших примеров поиск подстроки, вероятно, будет вашим лучшим вариантом.
Однако, если ваши URI на самом деле достаточно сложны, вы можете попробовать Стивена Левитана parseUri
:
parseUri(uri).file;
Он имеет 2 режима, каждый из которых имеет свою долю причуд, поэтому проверить демо.
Используйте регулярное выражение, что-то вдоль этих строк должно сделать трюк:
[^/]+\.[^/]+
Хотя это не распространяется на все возможные случаи, оно должно быть более чем подходящим для большинства случаев. Вы можете использовать:
var url = window.location.href;
var regex = new RegExp("[^/]+\.[^/]+");
var fileName = regex.exec(url);
Надеюсь, что поможет
var filename = /[^\\\/:*?"<>|\r\n]+$/i.exec(window.location.href)[0];
var pathnameArray = window.location.pathname.split("/");
var nameOfFile = pathnameArray[pathnameArray.length -1];
Вероятно, некоторые издержки, о которых я не знаю, когда рассматривают возможность создания массива по сравнению с другими упомянутыми ниже. Поэтому, возможно, это не отличный ответ, а другой подход к решению одной и той же проблемы.
спасибо sam deng, похоже, работает, но у вас есть опечатка моего друга:
// Extract filename from current page.
var filePath = window.location.pathname;
var fileName = filePath.substr(filePath.lastIndexOf("/") + 1);
Если URL-адрес выглядит следующим образом:
yourdomain.com/app_dev.php
yourdomain.com/app_dev.php/article/2
и вы хотите просто вытащить имя файла (/app_dev.php), чтобы вы могли ссылаться на свою домашнюю страницу:
var filename = window.location.pathname.substr(0, window.location.pathname.indexOf("/", 1));
window.location = filename;