使用window.location.pathname我得到“/ Mobile / Evol / 12-20-2011”。
使用Javascript,如何在“Evol /”之后删除所有内容,以便获得“/ Mobile / Evol /”?
答案 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')
打破这个正则表达式:
\/Evol\/
与文字"/Evol/"
相匹配。 \
是必要的,因为//Evol/...
是一个行注释,正则表达式中其他地方的/
结束了正则表达式。[^?#]
匹配查询或片段分隔符以外的任何内容(?:...)?
只是做了一些可选的[?#].*
匹配查询或片段开头,后跟任意数量的非空白字符$
强制匹配到达输入的结尾。答案 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("/"));