我正在寻找一种快速而廉价的方法来从网址中获取子字符串,如下所示:
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次的情况下完成吗?
答案 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])
}