我有以下网址: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);
它只能成功删除最后一部分。
我想再删除一部分。
我该怎么做?
答案 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("/");