1

我对 JS 比较陌生,而且很困惑。我有一个 URL 字符串:https://a/b/c/d/e/f。这些都是动态字符并且经常更改(例如可能是https://x/s/g/e/h/d) 在某些情况下,我只想删除 f,其中我使用 LastIndexOf。在其他情况下,我想同时删除最后一个和倒数第二个 EG:e/f。如何成功地做到这一点?我尝试使用拆分,但这只是出于某种原因将“/”替换为“,”。

工作 f 示例

var url = https://a/b/c/d/e/f
var new = url.substring(0, url.lastIndexOf('/') +1);

当前拆分 e/f 示例

var new = url.split('/')
console.log(new[new.length -2]);

这打印为: https:,,a,b,c,d,e,f,

4

5 回答 5

2

给你

const str = 'https://a/b/c/d/e/f'

function removeSegments(url, times) {
    const segments = url.split('/')
    return segments.slice(0, segments.length - times).join('/')
}

console.log(removeSegments(str, 1)) // 'https://a/b/c/d/e'
console.log(removeSegments(str, 2)) // 'https://a/b/c/d'
于 2018-11-16T11:39:38.900 回答
1

这是一种选择,使用正则表达式替换。仅删除最终路径:

url = "https://a/b/c/d/e/f";
url = url.replace(/\/[^/]+$/mg, "");

要删除最后两条路径:

url = "https://a/b/c/d/e/f";
url = url.replace(/\/[^/]+\/[^/]+$/mg, "");
于 2018-11-16T11:38:05.353 回答
0

您可以使用URL API轻松做到这一点。

您需要拆分路径名/,然后使用Array#slice它来仅获取您想要的部分。然后再次加入那些/

这是一个例子:

var url = new URL('https://a/b/c/d/e/f');

console.log(
  url.origin +
  url.pathname.split('/').slice(0, -2).join('/')
);

于 2018-11-16T11:40:14.433 回答
0

split() 创建一个在 split 函数中传递的子字符串数组。所以当你写

url.split('/') 它将创建一个以 / 作为分隔符的子字符串数组。

答案可能是:

获取元素的索引,直到您要使用以下方法删除字符串:

var index = indexOf(x)

然后将其传递给函数。

var str1 = str.substr(0, index)

str1 将是你的答案

于 2018-11-16T11:43:05.050 回答
0

您可以使用:

var num;
for ( var i=0; i< num; i++) {
    url= url.substring(0, url.lastIndexOf('/'));
}
于 2018-11-16T11:47:50.560 回答