删除倒数第二个索引后的其余字符串

Remove rest of string after the second to last index of

我对 JS 比较陌生并且很困惑。我有一个 URL 字符串:例如 https://a/b/c/d/e/f. These are all dynamic characters and change often (could be https://x/s/g/e/h/d)在某些情况下,我只想删除 f,我在其中使用了 LastIndexOf。在其他情况下,我想删除最后一个和倒数第二个 EG:e/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,

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

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

删除最后的两个路径:

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

给你

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'

您可以使用 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('/')
);

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

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

答案可能是:

获取元素的索引,直到您想要删除字符串时使用:

var index = indexOf(x)

然后在函数中传递。

var str1 = str.substr(0, index)

str1 将是您的答案

您可以使用:

var num;
for ( var i=0; i< num; i++) {
    url= url.substring(0, url.lastIndexOf('/'));
}