JavaScript: найти второе последнее появление строки внутри строки? - PullRequest
0 голосов
/ 27 января 2012

У меня есть этот URL http://www.something.com/category и

top.location.href.substr(0, top.location.href.lastIndexOf("/") );

возвращает http://www.something.com

Однако, если у меня есть URL http://www.something.com/category/something, как я могу снова получить http://www.something.com, удалив 2-е последнее появление "/" ...

Есть идеи? Я знаю, что есть такие вещи, как top.location.origin. Мне нужен способ обрезать последние две "косые черты"!

Ответы [ 2 ]

1 голос
/ 27 января 2012

Поскольку вы работаете с объектом location, используйте:

location.protocol + '//' + location.host + '/';
// On this page, it shows: http://stackoverflow.com/
// Include pathname:
location.protocol + '//' + location.host + location.pathname + '/';

Для вашего собственного решения вы можете добавить +1 ко второму аргументу:

top.location.href.substr(0, top.location.href.lastIndexOf("/")+1 );
                                                              ^^ Hi Plus One!

Ответ на обновленный вопрос (см. Комментарии ОП):

var href = top.location.href.replace(/(\/[^\/]+){2}\/?$/, '');
0 голосов
/ 27 января 2012

Вместо того, чтобы идти назад, у которого может быть переменное число индексов, почему бы не пойти вперед, если вы знаете, что впереди будет только 2?

var url = top.location.href;
var index1 = url.indexOf('/');
var index3 = url.indexOf('/', index1 + 2);
var final = url.substr(0, index3);
...