Javascript: eliminar el último carácter si son dos puntos

2 minutos de lectura

avatar de usuario
neil

Relativo recién llegado a Javascript y buscando una forma de eliminar el último carácter de una cadena si son dos puntos.

lo sé myString = myString.replace('/^\\:/'); funcionará para el comienzo de la línea, pero no estoy seguro de cómo cambiar en el $ carácter para cambiar al final de una línea… ¿alguien puede corregirlo?

Gracias

avatar de usuario
Guffa

La expresión regular literal (/.../) no debe estar en una cadena. Al corregir su código para eliminar los dos puntos al comienzo de la cadena, obtiene:

myString = myString.replace(/^\:/, '');

Para hacer coincidir los dos puntos al final de la cadena, ponga $ después del colon en lugar de ^ antes de eso:

myString = myString.replace(/\:$/, '');

También puede hacerlo usando operaciones de cadena simples:

if (myString.charAt(myString.length - 1) == ':') {
  myString = myString.substr(0, myString.length - 1);
}

  • Gracias por la respuesta detallada. Como recién llegado, entiendo el uso de la barra diagonal inversa como un carácter de escape, pero ¿por qué hay una serie de barras diagonales inversas/invertidas en el replace ¿declaración?

    – neil

    3 de septiembre de 2012 a las 13:47


  • @neilf: Las barras /.../ es la expresión regular literal. Dentro de la expresión regular hay una barra invertida para escapar del carácter de dos puntos, de modo que se interprete como un carácter literal y no tenga un significado especial en la expresión. (Corregí el código anterior, tenía barras invertidas dobles para escapar del patrón para ponerlo en una cadena, es decir new Regex('^\\:')su código original era una especie de mezcla entre un literal de expresiones regulares y una cadena de expresiones regulares).

    – Guffa

    3 de septiembre de 2012 a las 13:55

  • yo no era consciente de la /.../ formato, solo la barra invertida – gracias por explicar.

    – neil

    3 de septiembre de 2012 a las 14:15


  • Gracias Guffa, eres épica! Usé su respuesta Regex para manipular otros caracteres en las URL con facilidad.

    – Andrejs

    11 de junio de 2015 a las 12:16

avatar de usuario
Fabricio Calderan

intenta simplemente con

myString = myString.replace(/:$/, '');

esto eliminará : cuando está al final de la cadena

  • Necesitaba eliminar cualquier cantidad de caracteres de nueva línea al final de mi entrada de cadena. Su ejemplo sirvió como un sólido punto de partida. Entonces usé expresión regular para probar y perfeccionar. Finalmente se me ocurrió /(\n$)+/gr y parece que funciona perfectamente. Gracias por la respuesta simple y efectiva.

    – Mentalista

    7 de enero de 2019 a las 16:52

  • @Mentalista, debería ser /\n+$/: el cuantificador debe seguir la nueva línea, no el delimitador final

    – Fabricio Calderán

    7 de enero de 2019 a las 16:58


$ debe estar al final de la expresión regular para que coincida con EOL.

/:$/

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad