JavaScript indexOf () - как получить конкретный индекс
допустим, у меня есть URL:
http://something.com/somethingheretoo
и я хочу получить то, что после 3-й экземпляр /
?
что-то вроде эквивалента indexOf()
что позволяет мне ввести, какой экземпляр обратной косой черты я хочу.
8 ответов
Если вы знаете, что начинается с http://
или https://
, просто пропустите эту часть с этим шутка:
var content = aURL.substring(aURL.indexOf('/', 8));
Это дает вам больше гибкости, если в этом сегменте есть несколько косых черт.
s = 'http://something.com/somethingheretoo';
parts = s.split('/');
parts = parts.slice(0, 2);
return parts.join('/');
если вы хотите придерживаться indexOf
:
var string = "http://something/sth1/sth2/sth3/"
var lastIndex = string.indexOf("/", lastIndex);
lastIndex = string.indexOf("/", lastIndex);
lastIndex = string.indexOf("/", lastIndex);
string = string.substr(lastIndex);
если вы хотите получить путь к этому URL-адресу, вы также можете использовать RE:
string = string.match(/\/\/[^\/]+\/(.+)?/)[1];
это RE ищет "//
", признает, что между "//
" и далее "/
", и возвращает объект. Этот объект имеет несколько свойств. propery [1]
содержит подстроку после третьего /
.
другой подход-использовать функцию Javascript "split":
var strWord = "me/you/something";
var splittedWord = strWord.split("/");
splittedWord[0] вернет "me"
splittedWord[1] вернет "you"
splittedWord[2] вернет "что-то"
похоже, вы хотите pathname
. Если вы находитесь в браузере, держите a
элемент удобная...
var _a = document.createElement('a');
...и пусть он сделает анализ за вас.
_a.href = "http://something.com/somethingheretoo";
alert( _a.pathname.slice(1) ); // somethingheretoo
попробуйте что-то вроде следующей функции, которая вернет индекс n-го вхождения строки поиска s, или -1, если есть n-1 или меньше совпадений.
String.prototype.nthIndexOf = function(s, n) {
var i = -1;
while(n-- > 0 && -1 != (i = this.indexOf(s, i+1)));
return i;
}
var str = "some string to test";
alert(str.nthIndexOf("t", 3)); // 15
alert(str.nthIndexOf("t", 7)); // -1
alert(str.nthIndexOf("z", 4)); // -1
var sub = str.substr(str.nthIndexOf("t",3)); // "test"
конечно, если вы не хотите, чтобы добавить функцию в строку.prototype вы можете использовать его как автономную функцию, добавив другой параметр для передачи строки, в которой вы хотите выполнить поиск.
вот очень хороший способ справиться с этим: Как я могу удалить все символы до и включая 3-ю косую черту в строке?
мое предпочтение предлагаемых решений -
var url = "http://blablab/test/page.php";
alert(url.split("/")[3]);
//-> "test"