web-dev-qa-db-fra.com

Retourne la chaîne sans slash

J'ai deux variables:

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

Je veux faire quelque chose comme ça

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

Comment puis-je faire cela?

150
Ryan

Essaye ça:

function someFunction(site)     
{     
    return site.replace(/\/$/, "");
} 
409
Chandu
function stripTrailingSlash(str) {
    if(str.substr(-1) === '/') {
        return str.substr(0, str.length - 1);
    }
    return str;
}

Remarque: IE8 et les versions antérieures ne prennent pas en charge les décalages de sous-négatifs. Utilisation str.length - 1 _ si vous devez prendre en charge ces anciens navigateurs.

75
ThiefMaster

ES6/ES2015 fournit une API permettant de demander si une chaîne se termine par quelque chose, ce qui permet d'écrire une fonction plus propre et plus lisible.

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

J'utiliserais une expression régulière:

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 ($)
}

Vous voudrez cependant vous assurer que la variable site est une chaîne.

29
ChronosLLC

Cet extrait est plus précis:

str.replace(/^(.+?)\/*?$/, "$1");
  1. Cela ne dénude pas / chaînes, car il s'agit d'une URL valide.
  2. Il supprime les chaînes avec plusieurs barres obliques.
8
1ven

Je sais que la question concerne les barres obliques, mais je suis tombé sur ce message lorsque j'ai cherché à réduire les barres (les barres de la tête et de la queue), et cela m'a aidé à résoudre mon problème. Voici comment couper une ou plusieurs barres à la fois. début et fin d'une chaîne:

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

Voici un petit exemple d'URL.

var currentUrl = location.href;

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

connecte la nouvelle URL

console.log(currentUrl);
2
DevJ3rry

Le moyen facile que je connaisse est-ce

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

Ceci vérifiera ensuite la présence d’un/à la fin et s’il le supprime s'il ne retournera pas votre chaîne telle qu’elle était.

Juste une chose que je ne peux pas commenter pour le moment @ThiefMaster wow, vous ne vous souciez pas de la mémoire, avez-vous lol lancé un sous-substrat juste pour un si?

Correction du calcul pour l'index de base zéro sur la chaîne.

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

une autre solution.

1
Доширак