使用window.location.pathname,我得到了"/Mobile/Evol/12-20-2011"。使用Javascript,如何删除"Evol/"后面的所有内容,以便获得"/Mobile/Evol/"?
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/"
var url = '/Mobile/Evol/12-20-2011';
var tokens = url.split('/');
var reqURL = token[0] + '/'+ token[1] ;
当然,URL格式必须相同:some_string/some_string/some_string
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
url.replace(/\/Evol\/[^?#]*(?:[?#].*)?$/, '/Evol')
为了解析这个正则表达式:
\/Evol\/
匹配文字"/ Evol /"
。 \
是必要的,因为//Evol/ ...
将是一行注释,在正则表达式中的其他位置的/
结束正则表达式。[^?#]
匹配任何不是查询或片段分隔符的字符(?:...)?
使某些内容可选[?#].*
匹配查询或片段开始后跟任意数量的非空格字符$
强制匹配到达输入的结尾。一行代码:
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("/"));