我写了一些js,它会对路径名进行一些清理。到目前为止,我有以下内容:
var corePageUrl = window.location.pathname.toLowerCase();
if (corePageUrl.indexOf("/account/logon")>=0||corePageUrl.indexOf("/account/summary")>=0)) {
// do function here
}
基本上,该函数需要执行以下操作:获取路径名,从中删除尾随/,如果除了那两个限定if语句的.indexOf
语句之外还有其他内容,请将其删除。许多谷歌搜索都让我无处可去,当我开始处理更复杂的javascript问题时,这让我感到安心。
我不是要求任何人为我编码,更多的是帮助我找到能够带来理想结果的逻辑。
答案 0 :(得分:2)
听起来你只想要一些基本的字符串操作。你的意思是这样的吗?
var url = window.location.pathname.toLowerCase(),
i = -1, // var for indexOf
lookFor = ['/account/logon', '/account/summary'], // what to look for
j = lookFor.length; // var for loop
// remove query
i = url.indexOf('?');
if (i !== -1) { // has query
url = url.slice(0, i); // trim
i = -1; // reset i for later
}
// remove trailing /
while (url.slice(-1) === '/') { // has trailing /
url = url.slice(0, -1); // trim it
}
// trim url in special cases
while (i === -1 && j) { // find a match
i = url.indexOf(lookFor[--j]); // remember to decrease loop counter
}
if (i !== -1) {
i = i + lookFor[j].length; // position of end of match
url = url.slice(0, i); // trim after it
}
url; // resulting url
// Alternately,
// remove query
url = url.split('?', 1)[0]; // get the segment before the first ? (all if no ?)
// remove trailing /
url = url.match(/^([\s\S]*?)\/*$/)[1]; // capture group excludes trailing "/"s
// etc
示例:
http://example.com/some/random///?thing=in_my_url
http://example.com/some/random
http://hilario.us/page/account/summary/place?stuff
http://hilario.us/page/account/summary
答案 1 :(得分:0)
如果我理解正确,您希望该功能可以执行以下操作:
输入:http://www.example.com/account/logon/foo?bar=baz
。
输出:http://www.example.com/account/logon
您可以使用正则表达式轻松完成此操作,并捕获您要匹配的网址部分。
var url = window.location.pathname.toLowerCase(),
match;
if (match = url.match(/.*\/account\/(?:logon|summary)/)) {
// do function here
}
其中match
包含的网址包括/account/logon
或/account/summary
之前的所有内容。