Подтвердить что ты не робот

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

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

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

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

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

Конечно, это просто пример, потому что, очевидно, у меня будут разные страницы, но применяются те же принципы.

Мне было интересно, может ли кто-нибудь помочь мне с решением для этого. Я пробовал следующие действия, но без успеха:

var location = window.location.pathname;
var result = location.substring(location.lastIndexOf["/"]);
4b9b3361

Ответ 1

У вас есть правильная идея, просто замените скобки скобками.

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

Вот пример в jsfiddle, и здесь объясняется метод .lastIndexOf() на Mozilla Developer Network.

Ответ 2

Лично я бы использовал регулярное выражение:

var result = string.replace(/^.*\/(.*)$/, "$1");

Если вы знакомы с регулярными выражениями (и вы должны быть, если нет:-), то это не так чуждо, как если бы они были незнакомы.

Ведущий ^ заставляет это регулярное выражение "привязывать" соответствие в начале строки. \/ соответствует одному символу / (\ означает, что / не путает парсер регулярных выражений). Затем (.*)$ сопоставляет все остальное от / до конца строки. Начальный .* будет поглощать столько, сколько может, включая символы / до последнего. Текст замены "$1" - это специальная форма, которая означает "содержимое первой согласованной группы". Это регулярное выражение имеет группу, образованную круглыми скобками вокруг последнего .*(.*)$). Это будет весь материал после последнего /, поэтому общий результат состоит в том, что вся строка заменяется именно этим материалом. (Если шаблон не соответствует, потому что нет символов /, ничего не произойдет.)

Ответ 3

Разделите строку в массив на / и .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/, где у вас есть trailing /, если этот случай должен возвращать пустую строку, а не here, измените приведенное выше, чтобы удалить .replace() из цепочки вызовов, Я предположил, что вам нужен последний компонент, независимо от конечной косой черты, но, возможно, неправильно принял.

console.log(locationstring.split('/').pop());

Ответ 4

    var result = /\/([^\/]*)$/.exec(location)[1];

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

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

Ответ 5

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