удалите все до последнего появления символа
Я пытаюсь выполнить следующее действие над строкой:
- найти последнее вхождение символа
"/"
; - удалить все до этого символа;
- вернуть остатки строки;
чтобы быть более явным, скажем, у меня есть следующая строка:
var string = "/Roland/index.php"; // Which is a result of window.location.pathname
теперь мне нужно извлечь из него все, кроме самой страницы, что-то вроде этого :
var result = "index.php" // Which is what I need to be returned
Of конечно, это всего лишь пример, потому что, очевидно, у меня будут разные страницы, но применяются одни и те же принципы.
мне было интересно, если кто-то может помочь мне с решение для нее. Я попробовал следующие действия, но без успеха:
var location = window.location.pathname;
var result = location.substring(location.lastIndexOf["/"]);
5 ответов:
у вас есть правильная идея, просто замените скобки скобками.
var string = "/Roland/index.php"; var result = string.substring(string.lastIndexOf("/") + 1);
вот пример jsfiddle а вот и объяснение тому .метод lastIndexOf () на Mozilla Developer Network.
лично я бы использовал регулярное выражение:
var result = string.replace(/^.*\/(.*)$/, "");
если вы знакомы с регулярными выражениями (и вы должны быть, если нет: -), то это не так чуждо, как когда они незнакомы.
ведущий
^
заставляет это регулярное выражение "привязать" совпадение в начале строки. Элемент\/
соответствует одной/
характер (the\
сохранить/
от запутывания синтаксического анализатора регулярных выражений). Тогда(.*)$
матчи все остальное из/
до конца строки. Начальная.*
проглотит столько, сколько сможет, включая/
символы до последнего. Текст замены,""
, это специальная форма, которая означает "содержимое первой сопоставленной группы". Это регулярное выражение имеет группу, образованную скобками вокруг последнего.*
(in(.*)$
). Это будет все вещи после последнего/
, поэтому общий результат заключается в том, что вся строка заменяется только этим материалом. (Если шаблон не соответствует, потому что нет никаких/
символы, то ничего не произойдет.)
разделить строку в массив на
/
и.pop()
С последним элементом. Обратите внимание, что сначала вам нужно будет снять заднюю косую черту, если она есть.var locationstring = window.location.pathname; // replace() the trailing / with nothing, split on the remaining /, and pop off the last one console.log(locationstring.replace(/\/$/, "").split('/').pop());
если в случае URL, как
/path/stuff/here/
где у вас есть трейлинг/
, если этот случай должен возвращать пустую строку, а неhere
изменить выше, чтобы удалить.replace()
из цепочки вызовов. Я предполагал, что вы захотите последний компонент независимо от конечной косой черты, но, возможно, неправильно предполагаемый.console.log(locationstring.split('/').pop());