2个已知字符之间的子串

时间:2016-11-16 19:09:42

标签: javascript

我正在寻找一种快速而廉价的方法来从网址中获取子字符串,如下所示:

https://docs.google.com/spreadsheets/d/1oZK-vdEf2rvBhvAmdrKt1xHNlCehVV-WHDShkZUUaBM/edit#gid=0

之后的部分是:

1oZK-vdEf2rvBhvAmdrKt1xHNlCehVV-WHDShkZUUaBM

所以我们知道我们想要第4个' /'之间的价值。和第五' /' (zerobased指数)。

一种解决方案可能是:

function getPosition(str, m, i) {
   return str.split(m, i).join(m).length;
}

var url = https://docs.google.com/spreadsheets/d/1oZK-vdEf2rvBhvAmdrKt1xHNlCehVV-WHDShkZUUaBM/edit#gid=0;

var firstOccurence = getPosition(url,'/',4);
var secondOccurence = getPosition(url,'/',5);

var result = url.substring(firstOccurence, secondOccurence);

任何改进提示的提示?这可以在不必拨打getPosition() 2次的情况下完成吗?

3 个答案:

答案 0 :(得分:5)

您可以使用String中的split方法:

var result = url.split('/');

它将返回一个数组,您可以通过索引访问所需的部分:

result[4];

甚至:

result.slice(-2)[0];

使用字符串文字,您可以将其缩短为:

url.split`/`[4]

希望有所帮助:)

答案 1 :(得分:0)

var url = 'https://docs.google.com/spreadsheets/d/1oZK-vdEf2rvBhvAmdrKt1xHNlCehVV-WHDShkZUUaBM/edit#gid=0';

var part = url.replace('https://', '').split(/\//g)[3]
console.log(part)

答案 2 :(得分:0)

您可以使用正则表达式:



var url = 'https://docs.google.com/spreadsheets/d/1oZK-vdEf2rvBhvAmdrKt1xHNlCehVV-WHDShkZUUaBM/edit#gid=0';

var result = url.match(/spreadsheets\/d\/([^\/]+)\/?/);
if(result){
	console.log(result[1])
}