如何从URL中删除最后两个部分?

时间:2017-03-12 08:09:52

标签: javascript jquery

我有以下网址:http://myshop.dev/member/message/inbox/detail/58c4fad6607a1d16f0006b3b

我想删除最后两部分,因此会产生:http://myshop.dev/member/message/inbox

我试过这样:

var vars = "http://myshop.dev/member/message/inbox/detail/58c4fad6607a1d16f0006b3b";
var arrVars = vars.split("/");
var lastVar = arrVars.pop();
var restVar = arrVars.join("/");
console.log(restVar);

它只能成功删除最后一部分。

我想再删除一部分。

我该怎么做?

4 个答案:

答案 0 :(得分:3)

为什么不简单地使用子字符串函数:

if (vars.toLowerCase().indexOf("/detail/")!=-1)
    restVar = vars.substring(0,vars.toLowerCase().indexOf("/detail/"))

我认为它可以让您更好地控制自己在做什么。

答案 1 :(得分:2)

再次弹出它。 :)

var vars = "http://myshop.dev/member/message/inbox/detail/58c4fad6607a1d16f0006b3b";
var arrVars = vars.split("/");
arrVars.pop();
arrVars.pop();
var restVar = arrVars.join("/");
console.log(restVar);

或者你可以使用拼接:

var vars = "http://myshop.dev/member/message/inbox/detail/58c4fad6607a1d16f0006b3b";
var arrVars = vars.split("/");
arrVars.splice(-1,2)
var restVar = arrVars.join("/");
console.log(restVar);

答案 2 :(得分:1)

您可以pop两次,但还有其他解决方案。

例如,将数组的长度减少为2具有相同的效果:

arrVars.length -= 2;

var vars = "http://myshop.dev/member/message/inbox/detail/58c4fad6607a1d16f0006b3b";
var arrVars = vars.split("/");
arrVars.length -= 2;
var restVar = arrVars.join("/");
console.log(restVar);

但也许可以考虑使用正则表达式:

vars.match(/(.*)\/.*\//)[1]

这就是说:尽可能多地抓住,只要两个正斜杠仍然在它之后。

var vars = "http://myshop.dev/member/message/inbox/detail/58c4fad6607a1d16f0006b3b";
var restVar = vars.match(/(.*)\/.*\//)[1];
console.log(restVar);

请注意,输入应该是有效的URL。如果字符串中没有两个正斜杠,则会引发异常。如果您需要处理此问题,并且不喜欢try...catch,请先测试match结果是否不是null,然后才能获取捕获的组内容:

var restVar = vars.match(/(.*)\/.*\//);
restVar = restVar && restVar[1];

答案 3 :(得分:0)

您可以使用pop()splice(),而不是两次调用slice()

splice() - w3schools docs

var vars = "http://myshop.dev/member/message/inbox/detail/58c4fad6607a1d16f0006b3b";
var arrVars = vars.split("/");

// remove desired # of URL pieces here in 2nd parameter:
arrVars.splice(-2, 2);
var restVar = arrVars.join("/");

切片() - w3schools docs

var vars = "http://myshop.dev/member/message/inbox/detail/58c4fad6607a1d16f0006b3b";
var arrVars = vars.split("/");
var arrLength = arrVars.length;

// remove desired # of URL pieces here:
var arrVars = arrVars.slice(0, arrLength - 2);
var restVar = arrVars.join("/");