Cómo eliminar el primer y el último carácter de una cadena

161

Me pregunto cómo eliminar el primer y el último carácter de una cadena en Javascript.

Mi url se muestra /installers/y solo quiero installers.

A veces lo será /installers/services/y solo necesito installers/services.

Así que no puedo simplemente quitar las barras /.

Maní
fuente
Estoy tratando de despojar al primer y último personaje de eso. Solo estoy agarrando la URL
Peanut
Me pregunto por qué nadie parece darse cuenta de que recortar barras (como lo indica el texto) y eliminar incondicionalmente el primer y último carácter de una cadena (como indica el título) no es lo mismo. Pero explica la amplia gama de respuestas a continuación.
JensG

Respuestas:

360

Aqui tienes

var yourString = "/installers/";
var result = yourString.substring(1, yourString.length-1);

console.log(result);

O puede usar .slicesegún lo sugerido por Ankit Gupta

var yourString = "/installers/services/";

var result = yourString.slice(1,-1);

console.log(result);

Documentación de la rebanada y subcadena .

Dieterg
fuente
66
Pero la url no termina con una barra oblicua, tomará de 1 personaje
Martijn
77
@Martijn esto responde exactamente la pregunta. Nadie dijo que no quieres tirarte nada más que barra;). +1 de mí: el código debe decir lo que se supone que debe hacer, no como ejemplos de expresiones regulares aquí.
Episodex
Pero si se muda a otro servidor, es posible que la barra diagonal no esté allí (o tal vez haya modificado el cambio a propósito). No voto negativo, solo señalándolo :)
Martijn
La barra diagonal siempre va a estar allí porque apunta al archivo index.php ...
Peanut
131

Puede ser mejor usar rebanada como:

string.slice(1, -1)
Ankit Gupta
fuente
14

No creo que jQuery tenga nada que ver con esto. De todos modos, intente lo siguiente:

url = url.replace(/^\/|\/$/g, '');
hoja
fuente
1
Este parece ser el más correcto hasta ahora. La única cosa, me gustaría añadir un cuantificador, por si acaso: /^\/+|\/+$/g.
georg
8

Podrías regexearlo:

"string".replace(/^\/?|\/?$/, "")
"/installers/services/".replace(/^\/?|\/?$/, "") // -> installers/services

La expresión regular explicó:
- Primera barra oblicua opcional: ^/?escapado -> ^\/?(el ^comienzo medio de la cadena)
- La tubería (|) se puede leer como or
- Que la barra oblicua al final -> /?$, escapó -> \/?$(el $extremo final de la cadena )

Combinado sería ^/?|/$sin escapar. Opcional primera barra o última barra opcional

Martijn
fuente
La cuestión es que no puedo quitar el "/" porque a veces los necesito para separar las partes internas de la url
Peanut
Las barras internas no desaparecen. Editaré y explicaré la expresión regular
Martijn
3
Creo que necesita la bandera global para que esto funcione: "/installers/services/".replace(/^\/?|\/?$/g," ")
Matt Gaunt
3

Puedes usar el substringmétodo

s = s.substring(0, s.length - 1) //removes last character

otra alternativa es el slicemétodo

Hesse
fuente
3

Puedes hacer algo así:

"/installers/services/".replace(/^\/+/g,'').replace(/\/+$/g,'')

Esta expresión regular es una forma común de tener el mismo comportamiento de la trimfunción utilizada en muchos idiomas.

Una posible implementación de la función de recorte es:

function trim(string, char){
    if(!char) char = ' '; //space by default
    char = char.replace(/([()[{*+.$^\\|?])/g, '\\$1'); //escape char parameter if needed for regex syntax.
    var regex_1 = new RegExp("^" + char + "+", "g");
    var regex_2 = new RegExp(char + "+$", "g");
    return string.replace(regex_1, '').replace(regex_2, '');
}

Lo cual eliminará todo /al principio y al final de la cadena. Maneja casos como///installers/services///

También puedes simplemente hacer:

"/installers/".substring(1, string.length-1);
OlivierH
fuente
1

utilizar .replace(/.*\/(\S+)\//img,"$1")

"/installers/services/".replace(/.*\/(\S+)\//img,"$1"); //--> services

"/services/".replace(/.*\/(\S+)\//img,"$1"); //--> services
Victor Ribeiro da Silva Eloy
fuente
Esto no hace lo que OP pidió.
Emile Bergeron
1

si necesita eliminar el primer leter de cadena

string.slice(1, 0)

y para eliminar la última letra

string.slice(0, -1)
Rizo
fuente
-3
url=url.substring(1,url.Length-1);

De esta manera puede usar los directorios si es como ... / ... / ... / ... etc.

Kuzgun
fuente
1
url.lengthNourl.Length
Arthur