Eliminar espacios en Javascript

Jueves, 21 de Septiembre de 2006

A 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í.

5 comentarios to “Eliminar espacios en Javascript”

  1. alex:

    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

  2. Davo:

    No tengo ni idea porque el ejemplo no funciona cuando lo pruebo, pongo esto entre la etiqueta head:


    Que puede estar mal????

    Salu2 Davo

  3. Maxy:

    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

  4. Raspa:

    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;
    }

  5. Nando:

    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

Hacer un comentario

XHTML: Puedes utilizar las siguientes etiquetas:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Verification Image

Debes leer y teclear los caracteres entre 0..9 y A..F para enviar la respuesta.