2012-09-03 12 views
32

Recién llegado a Javascript y buscando la manera de eliminar el último carácter de una cadena si es dos puntos.Javascript: elimine el último carácter si es dos puntos

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

Gracias

Respuesta

61

El literal de expresión regular (/.../) no debe estar en una cadena. La corrección de su código para eliminar los dos puntos al principio de la cadena, que se obtiene:

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

para que coincida con los dos puntos al final de la cadena, puesto $ tras los dos puntos en lugar de ^ antes de que:

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

también puede hacerlo utilizando las operaciones de cadena de civil:

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

Gracias por la respuesta detallada. Como recién llegado, entiendo sobre el uso de la barra diagonal inversa como un carácter de escape, pero ¿por qué hay una serie de barras diagonales hacia adelante/hacia atrás en la declaración 'reemplazar'? – neil

+0

@neilf: slahses '/.../' es el literal de expresión regular. Dentro de la expresión regular hay una barra invertida para escapar del carácter de dos puntos, por lo que se interpreta como un carácter literal y no tiene ningún significado especial en la expresión. (Corregí el código anterior, tenía barras invertidas dobles para escapar del patrón y ponerlo en una cadena, es decir, 'new Regex ('^ \\:')', tu código original era una especie de mezcla entre un literal de expresión regular y un cadena regex.) – Guffa

+0

No conocía el formato '/.../', solo la barra invertida, gracias por explicarme. – neil

16

tratan simplemente con

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

Esto eliminará : cuando se está en el extremo de la cadena

+0

Ah, lo tenía al final, pero demasiadas barras ... muchas gracias – neil

0

$ necesario que haya al final de la expresión regular para que coincida con EOL.

/:$/

Cuestiones relacionadas