我有两个变量:
site1 = "www.somesite.com";
site2 = "www.somesite.com/";
我想做这样的事情
function someFunction(site)
{
// If the var has a trailing slash (like site2),
// remove it and return the site without the trailing slash
return no_trailing_slash_url;
}
我怎么做呢?
我所知道的最简单的方法是:
function stripTrailingSlash(str){
if(str.charAt(str.length-1) == "/"){ str = str.substr(0, str.length - 1);}
return str
}
更新ES2015版本。
const stripTrailingSlash = str=>str.charAt(str.length-1)=="/"?str.substr(0,str.length-1):str;
这将检查末尾的/,如果它在那里,就删除它。如果不是,它会返回你的字符串。
修正了字符串上从零开始索引的计算。
编辑:
因为对一个响应有一个注释,现在有更多的人做同样的事情,不使用子字符串进行比较,你在内存中创建了一个全新的字符串(在低级别),当你可以使用charAt来获得一个更少的内存来进行比较时,Javascript仍然是JIT,不能做任何编译器都可以做的优化,它不会为你修复这个问题。
根据@vdegenne的回答…如何脱衣:
单尾斜杠:
theString。取代 (/\/$/, '');
单个或连续的尾随斜杠:
theString。回到(\ $ / + / g ');
单前导斜杠:
theString。取代 (/^\//, '');
单线或连续的前导斜线:
theString。回想起(^ \ / + / g ');
单行斜杠和尾斜杠:
theString。取代 (/^\/|\/$/ 克,”)
单个或连续的前导斜杠和尾斜杠:
theString。replace (/^\/+|\/+$/ g,”)
要同时处理斜杠和反斜杠,可以将\/实例替换为[\\/]