Eliminar espacios en Javascript
Jueves, 21 de Septiembre de 2006A veces nos puede hacer falta saber el contenido de una cadena en Javascript sin los espacios del principio y del final. Por ejemplo, es común hacer la siguiente validacion de un campo de un formulario para saber si esta vacÃo:
function valida() {
if (document.forms['f'].campo.value == "") {
alert('Campo vacio');
}
}
O algún mañoso habrá intentado:
function valida() {
if (document.forms['f'].campo.length == 0) {
alert('Campo vacio');
}
}
Estos dos sistemas funcionan, pero solo aparentemente. El usuario puede engañarte y meter un espacio, dejando el campo en blanco, pero que ocupa una posición (o más) y no es exactamente la cadena vacÃa (”") con la que comparamos.
Podemos intentar algunos trucos para eliminar los espacios, pero buscando por internet, he encontrado el método más eficaz.
String.prototype.trim = function() { return this.replace(/^s+|s+$/g, ""); };
Con esta lÃnea, estamos declarando una función llamada trim() en la clase String. Es decir, que en cualquier cadena de texto podemos llamar al método trim() para que nos devuelva el contenido sin espacios por delante ni por detrás. La sustitución se hace con una expresión regular. Más elegante y sencillo imposible.
Ahora nuestra podemos completar nuestra validación como sigue:
String.prototype.trim = function() { return this.replace(/^s+|s+$/g, ""); };
function valida() {
if (document.forms['f'].campo.trim().length == 0) {
alert('Campo vacio');
}
}
Y aunque inserten espacios en blanco, funcionará.
De todas formas, siempre es más comodo utilizar alguna librerÃa en Javascript de validación de formularios, además de volver a validar los parámetros en el servidor.
Un test de la función:
String.prototype.trim = function() { return this.replace(/^s+|s+$/g, ""); };
var str = " esto es una prueba ";
alert("Cadena original: '" + str + "'");
alert("Sin espacios: '" + str.trim() + "'");
La función la he cogido de este post en Bigbold. Fijaos bien en los comentarios porque el primer método propuesto no funciona correctamente, he cogido el del primer comentarista. Ese es el que funciona y el que os acabo de poner aquÃ.
















Octubre 27th, 2006 5:11 pm
Es increible que Java Script no tenga su propia función trum y que nosotros tengamos que crearla.
Muchas gracias por la función.
Att: Alex
Noviembre 10th, 2006 7:48 am
No tengo ni idea porque el ejemplo no funciona cuando lo pruebo, pongo esto entre la etiqueta head:
Que puede estar mal????
Salu2 Davo
Noviembre 13th, 2006 7:09 pm
Esta bueno el scripts, pero si necesito valiar que no me ingrese una cadena determinada??
Por ejemplo en la valida(), fijarme si ingresa la palabra “corresponda”, si es asi pedir de nuevo el input.
Gracias,
maximiliano Almada
Agosto 2nd, 2007 1:54 am
He aqui una alternativa al uso de expresiones regulares, sirve tanto para IE como para Mozilla:
String.prototype.trim = function() {
cad = this;
while(cad.charAt(0)==” “) cad=cad.substring(1,cad.length);
while(cad.charAt(cad.length-1)==” “) cad=cad.substring(0,cad.length-1);
return cad;
}
Diciembre 7th, 2007 10:59 pm
Tengo una mas sencilla y efectiva:
Esta funcion hace las veces de un trim
function trim(cadena){
// USO: Devuelve un string como el parámetro cadena pero quitando los espacios en blanco de los bordes.
var retorno=cadena.replace(/^\s+/g,'’);
retorno=retorno.replace(/\s+$/g,'’);
return retorno;
}
Por ejemplo, si:
micadena = ” Hola que tal ”
micadena = trim(micadena)
DevolverÃa “Hola que tal”
No lo escribi yo, solo lo acomode un poco…saludos