返回不带斜杠的字符串

时间:2011-07-13 14:49:21

标签: javascript string trailing-slash

我有两个变量:

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;
}

我该怎么做?

12 个答案:

答案 0 :(得分:393)

试试这个:

function someFunction(site)     
{     
    return site.replace(/\/$/, "");
} 

答案 1 :(得分:74)

function stripTrailingSlash(str) {
    if(str.substr(-1) === '/') {
        return str.substr(0, str.length - 1);
    }
    return str;
}

注意:IE8及更早版本不支持负substr偏移。如果您需要支持这些古老的浏览器,请使用str.length - 1

答案 2 :(得分:29)

ES6 / ES2015提供了一个API,用于询问字符串是否以某些内容结尾,这样可以编写更清晰,更易读的功能。

const stripTrailingSlash = (str) => {
    return str.endsWith('/') ?
        str.slice(0, -1) :
        str;
};

答案 3 :(得分:28)

我会使用正则表达式:

function someFunction(site)
{
// if site has an end slash (like: www.example.com/),
// then remove it and return the site without the end slash
return site.replace(/\/$/, '') // Match a forward slash / at the end of the string ($)
}

但是,您需要确保变量site是一个字符串。

答案 4 :(得分:7)

此代码段更准确:

str.replace(/^(.+?)\/*?$/, "$1");
  1. 它不会删除/个字符串,因为它是一个有效的网址。
  2. 它会删除带有多个尾部斜杠的字符串。

答案 5 :(得分:5)

我知道这个问题是关于拖尾斜线但我在搜索修剪斜线(头部和尾部斜线)时偶然发现了这个帖子,这篇文章帮助我解决了我的问题,所以这里是如何修剪一个或多个斜杠在字符串的开头和结尾都有:

'///I am free///'.replace(/^\/+|\/+$/g, ''); // returns 'I am free'

答案 6 :(得分:2)

我知道的简单方法就是这个

function stipTrailingSlash(str){
   if(srt.charAt(str.length-1) == "/"){ str = str.substr(0, str.length - 1);}
   return str
}

这将检查结尾的/如果它的那个将删除它,如果它不会返回你的字符串

我还不能评论一件事 @ThiefMaster哇你不关心记忆你是不是只为一个if运行一个substr?

修复了字符串上从零开始的索引的calucation。

答案 7 :(得分:1)

这是一个小网址示例。

var currentUrl = location.href;

if(currentUrl.substr(-1) == '/') {
    currentUrl = currentUrl.substr(0, currentUrl.length - 1);
}

记录新网址

console.log(currentUrl);

答案 8 :(得分:1)

function stripTrailingSlash(text) {
    return text
        .split('/')
        .filter(Boolean)
        .join('/');
}

另一种解决方案。

答案 9 :(得分:0)

基于@vdegenne的答案...如何剥离:

单斜杠:

theString.replace(/\/$/, '');

单个或连续的斜杠:

theString.replace(/\/+$/g, '');

单斜杠:

theString.replace(/^\//, '');

单个或连续的斜杠:

theString.replace(/^\/+/g, '');

单个前导和尾部斜杠:

theString.replace(/^\/|\/$/g, '')

单个或连续的前导和尾部斜杠:

theString.replace(/^\/+|\/+$/g, '')

要同时处理斜杠和后退斜杠,请将\/的实例替换为[\\/]

答案 10 :(得分:0)

其中一些示例比您可能需要的更为复杂。要从任何地方(前导或尾随)删除单个斜杠,您可以摆脱像这样简单的东西:

let no_trailing_slash_url = site.replace('/', '');

完整示例:

let site1 = "www.somesite.com";  
let site2 = "www.somesite.com/";  

function someFunction(site)
{
    let no_trailing_slash_url = site.replace('/', '');
    return no_trailing_slash_url;
}

console.log(someFunction(site2)); // www.somesite.com

请注意,.replace(...)返回一个字符串,它不会修改调用它的字符串。

答案 11 :(得分:-10)

function someFunction(site) {
  if (site.indexOf('/') > 0)
    return site.substring(0, site.indexOf('/'));
  return site;
}