如何使用JavaScript中的indexOf获取倒数第二个索引处的字符?

5

var absoluteURL = "http://stackoverflow.com/users/6262169/vikas-kohli"     
var n = absoluteURL.lastIndexOf('/');
var result = absoluteURL.substring(n + 1);
//alert(result);
console.log(result);

在这里,我使用lastIndexOf获取了结果'vikas-kohli'。

现在,如果有人想从倒数第二个索引或第三个索引获取字符,该怎么做呢?

希望我能够清楚地表达我的问题。


5
使用斜杠(/)进行字符串分割,然后获取所需的值并重新组合。a=url.split('/'); final=a.slice(a.length - n).join('/') - Rajesh
相关: http://stackoverflow.com/questions/42022542/is-possible-to-get-last-path-of-regexp-in-url/42022591#42022591 - Mistalis
10个回答

6
  • 使用字符串的split('/') 方法代替使用lastIndexOf('/')

var absoluteURL = "http://stackoverflow.com/users/6262169/vikas-kohli"     
var splittedStr = absoluteURL.split('/');
console.log(splittedStr);

从数组中获取所需元素。
var res = splittedStr[splittedStr.length-n]; // n: 1,2,3.. cosnole.log(res);

var absoluteURL = "http://stackoverflow.com/users/6262169/vikas-kohli"     
var splittedStr = absoluteURL.split('/');
console.log(splittedStr[splittedStr.length-2]);


0
你可以在window.location.pathname上使用.split()

var locPath = "users/6262169/vikas-kohli"; // window.location.pathname;
var arr = locPath.split('/');

arr.forEach(function(item){
  console.log(item);
});

使用特定的索引:

var locPath = "users/6262169/vikas-kohli"; // window.location.pathname;
var arr = locPath.split('/');

console.log('last::::',arr[arr.length-1]);
console.log('second last::::', arr[arr.length-2]);

或者后续的pop()可以给你数组的最后一个元素:

var locPath = "users/6262169/vikas-kohli"; // window.location.pathname;
var arr = locPath.split('/');

console.log(JSON.stringify(arr, 0, 0), '<---last::::popped-->',arr.pop());
console.log(JSON.stringify(arr, 0, 0), '<-----second last::::popped--->', arr.pop());


0

只需使用/分割您的URL:

var absoluteUrl = "http://stackoverflow.com/users/6262169/vikas-kohli";window.location.pathname;
var splitedUrl = absoluteUrl .split('/');
console.log(splitedUrl);

然后在数组中获取您想要的元素。


0

IndexOf或类似的可能不是你所需要的。你可以使用split代替。

var absoluteURL = "http://stackoverflow.com/users/6262169/vikas-kohli";
var partNo = 3;
var parts = absoluteURL.split('/');
alert(parts[parts.length - partNo]);


0

使用/分割字符串后,从所需索引处连接字符串。

var absoluteURL = "http://stackoverflow.com/users/6262169/vikas-kohli";     
var n = 2; // set the index from where you want to get characters
var arr = absoluteURL.split('/');
var a = [];
for(var i=n,j=0; i>=0; i--,j++){
  a[j] = arr[arr.length-i];
}
console.log(a.join('')); // you can join it with any character


0

这应该可以工作:

var absoluteURL = "http://stackoverflow.com/users/6262169/vikas-kohli"     
var results = absoluteURL.split('/');
var result = results[results.length-2];
alert(result);

这将从最后一个索引获取数据。 - VIKAS KOHLI
6262169 / Vikas Kohli 我需要像这样的东西,我该怎么做? - Manoj Bhardwaj

0

像这样吗?

var absoluteURL = "http://stackoverflow.com/users/6262169/vikas-kohli"     
var n = 2 //second last
var arr = absoluteURL.split('/')
console.log(arr[arr.length-n])

0
一个简单的for循环就可以解决问题。
var absoluteURL = "http://stackoverflow.com/users/6262169/vikas-kohli"    
var n = absoluteURL.indexOf('/');
absoluteURL = absoluteURL.substring(n+2); // Becasue there are two / first

for(i = 0; i < x ; i++) // x should be such that if it is 1, then only the last string will come, if 2, then the last two strings
{
    n = absoluteURL.indexOf('/');
    absoluteURL = absoluteURL.substring(n+1);
}

0

嗨,如果你可以从用户那里获取第n个索引,你可以使用这个。

 var nthIndex = 2;
 var absoluteURL = "http://stackoverflow.com/users/6262169/vikas-kohli"  
 for (i = 0; i < nthIndex; i++) {   

        var n = absoluteURL.lastIndexOf('/');           
            absoluteURL = absoluteURL.substring(0,n);}
alert(absoluteURL);

0
我们可以自己添加一个函数来实现这个功能。
请添加以下代码片段:
String.prototype.nIndexOf = function (char, index) {
if (index >= this.split(char).length)
    return -1;
else
    return this.split(char, index).join(char).length;
}

然后你可以按照以下方式使用:

var absoluteURL = "http://stackoverflow.com/users/6262169/vikas-kohli"     
var n1 = absoluteURL.nIndexOf('/', 4);
var n2 = absoluteURL.nIndexOf('/', 5);
var result = absoluteURL.substring(n1 + 1, n2);
alert(result);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接