在jQuery脚本中,我有一行代码,它获取当前URL的字符串:
var target = $(this).attr('href');
此脚本中的代码是否可以检查URL字符串末尾是否有斜杠。如果它存在然后删除它?有什么办法可以推荐?
答案 0 :(得分:22)
我会这样做:
target = target.replace(/\/$/, '');
现在,如果您需要担心查询字符串的存在:
<a href='http://foo.bar.com/something/?param=xyz'>hi</a>
然后事情变得有点棘手。使用正则表达式解析URL可能是可能的,但它非常混乱。如果你可以逃脱它,缩小你的URL可能的样子的可能性,这样你就不必使用一些巨大的“官方”模式。
答案 1 :(得分:4)
这对于具有查询字符串的URL也应该是安全的,并且它不使用正则表达式....
var urlEnd = target.indexOf("?");
if(urlEnd == -1){
urlEnd = target.length;
}
// Don't bother doing anything if the URL is empty
if (urlEnd > 0){
if (target[urlEnd - 1] == "/"){
$(this).attr('href', target.substr(0, urlEnd-1) + target.substr(urlEnd));
}
}
答案 2 :(得分:2)
假设你的意思是斜杠,一个可能的解决方案是:
var l = target.length - 1;
if(target.lastIndexOf('/') === l) {
target = target.substring(0, l);
}
答案 3 :(得分:0)
您可以使用正则表达式来执行此操作:
target.replace(// +((\?|#)。*)?$ /,'$ 1');
哪个应该保留URL末尾的查询字符串或url片段。