2011-11-15 13 views

Respuesta

57

Usar una expresión regular. No te olvides de escapar de los personajes especiales.

s1 = s1.replace(/~+$/, ''); //$ marks the end of a string 
          // ~+$ means: all ~ characters at the end of a string 
+0

Perfecto, gracias! –

2

Una solución utilizando una expresión regular:

"hi there~".replace(/~*$/, "") 
2

No hay ajuste, ltrim o funciones RTrim en Javascript. Muchas bibliotecas les proporcionan, pero por lo general van a ser algo como:

str.replace(/~*$/, ''); 

Para los adornos adecuados, lo siguiente es generalmente más rápido que una expresión regular debido a la forma de expresiones regulares se ocupa de caracteres finales en la mayoría de los navegadores:

function rtrim(str, ch) 
{ 
    for (i = str.length - 1; i >= 0; i--) 
    { 
     if (ch != str.charAt(i)) 
     { 
      str = str.substring(0, i + 1); 
      break; 
     } 
    } 
    return str; 
} 
5

Puede modificar el prototipo de cadena si lo desea. La modificación del prototipo de String generalmente está mal visto, pero personalmente prefiero este método, ya que hace que el código sea más limpio en mi humilde opinión.

String.prototype.rtrim = function(s) { 
    return this.replace(new RegExp(s + "*$"),''); 
}; 

A continuación, llame ...

var s1 = "this is a test~"; 
var s = s1.rtrim('~'); 
alert(s); 
-1

Esto es viejo, lo sé. Pero no veo lo que está mal con Substr ...?

function rtrim(str, length) { 
    return str.substr(0, str.length - length); 
} 
+0

El único problema aquí es que podría haber cualquier número de caracteres al final de la cadena ... decir en lugar de 'esto es prueba ~' tenían 'esto es prueba ~~~' o incluso ninguno 'esto es prueba'. Sin embargo, su caso funciona bien para recortar un número determinado de caracteres de la cadena, independientemente de cuál sea el carácter. – bobkingof12vs

1

OMI esta es la mejor manera de hacer un ajuste/izquierda a la derecha y, por lo tanto, tiene una funcionalidad completa para recortar (desde javascript apoya string.trim forma nativa) ejemplo

String.prototype.rtrim = function (s) { 
    if (s == undefined) 
     s = '\\s'; 
    return this.replace(new RegExp("[" + s + "]*$"), ''); 
}; 
String.prototype.ltrim = function (s) { 
    if (s == undefined) 
     s = '\\s'; 
    return this.replace(new RegExp("^[" + s + "]*"), ''); 
}; 

Uso:

var str1 = ' jav ' 
var r1 = mystring.trim();  // result = 'jav' 
var r2 = mystring.rtrim();  // result = ' jav' 
var r3 = mystring.rtrim(' v'); // result = ' ja' 
var r4 = mystring.ltrim();  // result = 'jav ' 
Cuestiones relacionadas