Eu tenho duas variáveis:
site1 = "www.somesite.com";
site2 = "www.somesite.com/";
Eu quero fazer algo assim
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;
}
Como eu faço isso?
Respostas:
Tente o seguinte:
fonte
return site.replace(/\/+$/, "");
Nota: O IE8 e anteriores não suportam deslocamentos negativos de substr. Em
str.length - 1
vez disso, use se precisar oferecer suporte aos navegadores antigos.fonte
O ES6 / ES2015 fornece uma API para perguntar se uma sequência termina com algo, o que permite escrever uma função mais limpa e legível.
fonte
Eu usaria uma expressão regular:
Você vai querer ter certeza de que a variável
site
é uma string.fonte
Este trecho é mais preciso:
/
strings, pois é um URL válido.fonte
Sei que a pergunta é sobre barras à direita, mas encontrei este post durante minha pesquisa por barras (na cauda e no cabeçalho de uma cadeia de caracteres literal), pois as pessoas precisariam dessa solução. Estou postando uma aqui:
ATUALIZAR :
como @Stephen R mencionado nos comentários, se você deseja remover barras e barras invertidas na cauda e na cabeça de uma literal de cadeia de caracteres, escreva:
fonte
.replace(/^[\\/]+|[\\/]+$/g, '')
A maneira mais fácil que eu conheço é essa
Isso irá verificar se há um / no final e, se estiver lá, remova-o, se não estiver, retornará sua string como estava.
Apenas uma coisa que eu não posso comentar ainda @ThiefMaster wow você não se importa com a memória você lol runnign um substr apenas para um se?
Corrigida a calibração do índice baseado em zero na sequência.
fonte
Aqui está um pequeno exemplo de URL.
registrar o novo URL
fonte
Baseado na resposta de @vdegenne ... como retirar:
Única barra à direita:
theString.replace(/\/$/, '');
Barras à direita ou consecutivas:
theString.replace(/\/+$/g, '');
Barra única:
theString.replace(/^\//, '');
Barras principais simples ou consecutivas:
theString.replace(/^\/+/g, '');
Barras simples à direita e à direita:
theString.replace(/^\/|\/$/g, '')
Barras simples ou consecutivas à frente e à direita:
theString.replace(/^\/+|\/+$/g, '')
Para lidar com ambas as barras e traseiras barras, substitua as instâncias de
\/
com[\\/]
fonte
outra solução.
fonte
fonte
subtring
? Além disso, remove a primeira barra e tudo depois dela.substring
? Além disso, sim, pretendia remover a primeira barra e tudo o que estava depois dela, pois ela preenche a conta da pergunta e dos dados de exemplo publicados.