удалите все до последнего появления символа


Я пытаюсь выполнить следующее действие над строкой:

  • найти последнее вхождение символа "/";
  • удалить все до этого символа;
  • вернуть остатки строки;

чтобы быть более явным, скажем, у меня есть следующая строка:

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 51

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());
    var result = /\/([^\/]*)$/.exec(location)[1];

//"remove-everything-before-the-last-occurrence-of-a-character#10767835"

Примечание: location здесь window.location, а не ваши var location.

var string = "/Roland/index.php";
var result = string.substring(0, string.lastIndexOf("/") + 0);