4

使用 window.location.pathname 我得到“/Mobile/Evol/12-20-2011”。

使用 Javascript,如何在“Evol/”之后删除所有内容,以便获得“/Mobile/Evol/”?

4

5 回答 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/"
于 2012-12-21T16:50:05.967 回答
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

于 2012-12-21T17:04:13.290 回答
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
于 2012-12-21T16:51:21.383 回答
0

假设您想完全切断任何查询和片段:

url.replace(/\/Evol\/[^?#]*(?:[?#].*)?$/, '/Evol')

打破这个正则表达式:

  1. \/Evol\/匹配文字文本"/Evol/"\'s 是必要的,因为它将//Evol/...是行注释,而/正则表达式中的其他地方结束正则表达式。
  2. [^?#]匹配除查询或片段分隔符之外的任何内容
  3. (?:...)?只是做一些可选的
  4. [?#].*匹配查询或片段开头,后跟任意数量的非空白字符
  5. $强制匹配到达输入的末尾。
于 2012-12-21T16:51:54.773 回答
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("/"));

于 2020-06-13T00:41:16.483 回答