Búsqueda de sitios web

javascript - Devolver cadena sin barra al final


Tengo dos variables:

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

Quiero hacer algo así

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

¿Cómo hago esto?

Respuesta #1

Prueba esto:

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

Respuesta #2

ES6/ES2015 proporciona una API para preguntar si una cadena termina con algo, lo que permite escribir una función más limpia y legible.

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

Respuesta #3

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

Nota: IE8 y versiones anteriores no soportan desplazamientos negativos en substr. Usa str.length - 1 en su lugar si necesitas soportar esos navegadores antiguos.

Respuesta #4

Usaría una expresión regular:

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

Querrás asegurarte de que la variable site sea una cadena, sin embargo.

Respuesta #5

Basado en la respuesta de @vdegenne... cómo quitar:

Barra inclinada final única:

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

Barras inclinadas finales simples o consecutivas:

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

Barra inclinada única al principio:

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

Barras inclinadas iniciales simples o consecutivas:

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

Barras inclinadas simples al principio y al final:

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

Barras diagonales iniciales o finales simples o consecutivas:

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

Para manejar tanto barras como espaldasslashes, reemplaza las instancias de \/ con [\\/]

Respuesta #6

Sé que la pregunta es sobre las barras diagonales al final, pero encontré este artículo durante mi búsqueda para recortar barras diagonales (tanto al final como al principio de un literal de cadena), como la gente necesitaría esta solución, la estoy publicando aquí:

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

ACTUALIZACIÓN:

como @Stephen R mencionó en los comentarios, si quieres eliminar tanto las barras como las barras invertidas tanto al final como al principio de un literal de cadena, escribirías:

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

Respuesta #7

Este fragmento es más preciso:

str.replace(/^(.+?)\/*?$/, "$1");
  1. No elimina las cadenas /, ya que es una URL válida.
  2. Elimina las cadenas con múltiples barras diagonales al final.

Artículos relacionados