使用Javascript删除URL的结尾

时间:2012-12-21 16:47:02

标签: javascript

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

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

5 个答案:

答案 0 :(得分: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 :(得分:1)

只需在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

相同

答案 2 :(得分: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

答案 3 :(得分:0)

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

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

打破这个正则表达式:

  1. \/Evol\/与文字"/Evol/"相匹配。 \是必要的,因为//Evol/...是一个行注释,正则表达式中其他地方的/结束了正则表达式。
  2. [^?#]匹配查询或片段分隔符以外的任何内容
  3. (?:...)?只是做了一些可选的
  4. [?#].*匹配查询或片段开头,后跟任意数量的非空白字符
  5. $强制匹配到达输入的结尾。

答案 4 :(得分: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("/"));