我正在尝试找出如何获取字符串中某个字符的倒数第二个索引。
例如,我有一个字符串,像这样:
http://www.example.com/website/projects/2
目前我使用以下代码获取数字2
:
$(location).attr('href').substring($(location).attr('href').lastIndexOf('/')+1);
但如果我想要获取单词projects
呢?
有没有人可以帮助我解决这个问题?提前感谢!
我正在尝试找出如何获取字符串中某个字符的倒数第二个索引。
例如,我有一个字符串,像这样:
http://www.example.com/website/projects/2
目前我使用以下代码获取数字2
:
$(location).attr('href').substring($(location).attr('href').lastIndexOf('/')+1);
但如果我想要获取单词projects
呢?
有没有人可以帮助我解决这个问题?提前感谢!
split
方法:var url = $(location).attr('href').split( '/' );
console.log( url[ url.length - 1 ] ); // 2
console.log( url[ url.length - 2 ] ); // projects
// etc.
不使用split函数,且只用一行代码获取倒数第二个索引:
var secondLastIndex = url.lastIndexOf('/', url.lastIndexOf('/')-1)
这个模式可以用来更进一步:
var thirdLastIndex = url.lastIndexOf('/', (url.lastIndexOf('/', url.lastIndexOf('/')-1) -1))
感谢 @Felix Kling。
一个实用函数:
String.prototype.nthLastIndexOf = function(searchString, n){
var url = this;
if(url === null) {
return -1;
}
if(!n || isNaN(n) || n <= 1){
return url.lastIndexOf(searchString);
}
n--;
return url.lastIndexOf(searchString, url.nthLastIndexOf(searchString, n) - 1);
}
可以像 lastIndexOf 一样使用:
url.nthLastIndexOf('/', 2); //2nd last index
url.nthLastIndexOf('/', 3); //3rd last index
url.nthLastIndexOf('/'); //last index
str.lastIndexOf('/', str.lastIndexOf('/'))
的含义是在字符串str
中查找最后一个斜杠的位置,并返回该斜杠前面的字符所在的位置。具体用法请参考文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/lastIndexOf - Felix Kling