使用Javascript删除URL末尾

4
使用window.location.pathname,我得到了"/Mobile/Evol/12-20-2011"。使用Javascript,如何删除"Evol/"后面的所有内容,以便获得"/Mobile/Evol/"?

2
顺便问一下,你的真正目标是什么? - Marat Tanalin
@MaratTanalin 我也认同。从你的写作中,一般而言,你实际上想要实现什么并不清晰。 - user529758
5个回答

6
您可以使用substring()lastIndexOf()函数的组合来轻松地截取最后一个/之后的所有内容:
uri    = "/Mobile/Evol/12-20-2011";
newUri = uri.substring(0, uri.lastIndexOf('/'));

正如@josh指出的那样,如果在“/Evol”后面有更多的目录,这将失败。您可以通过搜索字符串'Evol/',然后将其长度添加回子字符串结尾来解决此问题:

dir = "Evol/";
newUri = uri.substring(0, uri.lastIndexOf(dir) + dir.length);

Chrome控制台给出了以下输出:

> uri    = "/Mobile/Evol/12-20-2011";
"/Mobile/Evol/12-20-2011"

> dir = "Evol/";
  newUri = uri.substring(0, uri.lastIndexOf(dir) + dir.length);
"/Mobile/Evol/"

1
这假设在“Evol”后面只有一个目录,这可能不正确。 - josh3736
@josh3736 没错,我只是按照发布的示例进行操作。我已经根据你的评论进行了编辑。 - Hunter McMillen

2
只需在JavaScript字符串中使用“split”函数即可。
var url = '/Mobile/Evol/12-20-2011';
var tokens = url.split('/');
var reqURL = token[0] + '/'+ token[1] ;

当然,URL格式必须相同:some_string/some_string/some_string


0
var str = window.location.pathname;
const sub = "Evol/";

var locEvol = str.indexOf(sub);
var endIdx = locEvol + sub.length;
var beginStr = str.substring(0, endIdx);
// beginStr contains the desired substring

0
假设您想完全切断任何查询和片段:
url.replace(/\/Evol\/[^?#]*(?:[?#].*)?$/, '/Evol')

为了解析这个正则表达式:

  1. \/Evol\/匹配文字"/ Evol /"\是必要的,因为//Evol/ ... 将是一行注释,在正则表达式中的其他位置的/结束正则表达式。
  2. [^?#]匹配任何不是查询或片段分隔符的字符
  3. (?:...)?使某些内容可选
  4. [?#].*匹配查询或片段开始后跟任意数量的非空格字符
  5. $强制匹配到达输入的结尾。

0

一行代码:

match.url.split("/").slice(0,-1).join("/")

let array1 = "/first/second/third/fourth";
let array2="posts/stories/1234";

console.log("Result=",array1.split("/").slice(0,-1).join("/"));
console.log("Result=",array2.split("/").slice(0,-1).join("/"));


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接