Возврат строки без косой черты - PullRequest
146 голосов
/ 13 июля 2011

У меня есть две переменные:

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

Как мне это сделать?

Ответы [ 9 ]

402 голосов
/ 13 июля 2011

Попробуйте это:

function someFunction(site)     
{     
    return site.replace(/\/$/, "");
} 
75 голосов
/ 13 июля 2011
function stripTrailingSlash(str) {
    if(str.substr(-1) === '/') {
        return str.substr(0, str.length - 1);
    }
    return str;
}

Примечание. IE8 и старше не поддерживают отрицательные смещения подстроки.Вместо этого используйте str.length - 1, если вам нужна поддержка этих древних браузеров.

34 голосов
/ 27 марта 2016

ES6 / ES2015 предоставляет API для запроса о том, заканчивается ли строка чем-либо, что позволяет написать более понятную и читаемую функцию.

const stripTrailingSlash = (str) => {
    return str.endsWith('/') ?
        str.slice(0, -1) :
        str;
};
29 голосов
/ 13 июля 2011

Я бы использовал регулярное выражение:

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 является строкой.

8 голосов
/ 17 августа 2017

Этот фрагмент более точен:

str.replace(/^(.+?)\/*?$/, "$1");
  1. Он не удаляет / строк, так как это действительный URL.
  2. Удаляет строки несколькими косыми чертами.
6 голосов
/ 25 мая 2018

Я знаю, что вопрос касается конечных слешей, но я наткнулся на этот пост при поиске обрезки (как головы, так и хвоста), и этот пост помог мне решить мою проблему, поэтому вот как обрезать один или несколько слешейкак в начале, так и в конце строки:

'///I am free///'.replace(/^\/+|\/+$/g, ''); // returns 'I am free'
2 голосов
/ 28 ноября 2014

Вот небольшой пример URL.

var currentUrl = location.href;

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

войти новый URL

console.log(currentUrl);
2 голосов
/ 13 июля 2011

Простой способ, которым я знаю, это

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

Затем он проверит наличие символа / на конце и, если он там, удалит его, если он не вернет вашу строку, как это было

Только одна вещь, которую я пока не могу комментировать @ThiefMaster Ух ты, ты не заботишься о памяти, неужели ты просто запустил субстрат только для if?

Исправлено вычисление для нулевого индекса в строке.

0 голосов
/ 13 июля 2011
function someFunction(site) {
  if (site.indexOf('/') > 0)
    return site.substring(0, site.indexOf('/'));
  return site;
}
...