jueves, 18 de febrero de 2010

Recorrer caracter por carecter en javascript

Podríamos necesitar recorrer una cadena de texto por ejemplo para validar un carácter que no esté permitido, en este caso usaremos la “ñ”.

Es un script muy sencillo pero útil:
function validarString (cadenaAnalizar) {
   for (var i = 0; i< cadenaAnalizar.length; i++) {
         var caracter = cadenaAnalizar.charAt(i);
         if( caracter == "ñ" || caracter == "Ñ") {
            alert("Caracter no permitido");
             return false;
          }  else {
             return true;
          }
    }
}  

7 comentarios:

  1. Si quisiera poner esto dentro de una función con datos de entrada campo y tipo que debería poner en cadenaAnalizar?

    ResponderEliminar
  2. No entiendo bien tu pregunta, esta función solo analiza la cadena carácter x carácter, cualquier cosa que necesites analizar en la cadena va dentro del if, en este caso yo utilice esta func para ver si la cadena contienes una Ñ, no se por ejemplo tu podrías verificar si es la cadena es un correo electrónico mediante la búsqueda de la @ y en la variable cadenaAnalizar iría la dirección de correo, por ejemplo: es_valida = validarString ("yo@midominio.com");

    Saludos.

    ResponderEliminar
  3. Tengo una funcion donde recibo el campo y el tipo que viene siendo el value, es para transformar las minusculas en mayusculas, y lo que quiero es utilizar el cadenaAnalizar pero no como funcion aparte, sino dentro de mi funcion, mi duda es que datos de entrada debo darle, que debo poner en vez de cadenaAnalizar? mi funcion parte asi...

    function nombredefuncion(campo,tipo){
    ....codigo
    }

    ResponderEliminar
  4. oK! para tu caso, si la variable tipo es la cadena a analizar entonces debes sustituir en nombre cadenaAnalizar por tu variable tipo, y el código que necesitarías insertar es a partir del ciclo for, así:
    function nombredefuncion(campo,tipo){
    for (var i = 0; i< tipo.length; i++) {
    var caracter = tipo.charAt(i);
    ... codigo
    }
    }

    esto te lee carácter x carácter tu cadena y ya puedes hacer lo que necesites para cada caracter, aun que si tu idea es cambiar de minúsculas a mayúsculas, existe una función de JS que lo hace: cadena.toUpperCase(); y viceversa: cadena.toLowerCase(); o en tu caso tipo.toUpperCase() y te devuelve toda la cadena en mayúsculas...

    Saludos.

    ResponderEliminar
  5. Gracias, el código quedo así, el único problema es que cuando tabulo se deselecciona el texto, como que se pierde el foco, ahí buscaré info. Saludos!

    for (var i = 0; i< campo.value.length; i++) {
    if(event.keyCode == 16 || event.keyCode == 17){
    campo.value.replace(/[&\/\\#+=¨`´^:$¬~%'"*°|¡!¿?<>{}]/g,'');
    }
    }

    ResponderEliminar
  6. Buenisima contribucion... Muchas gracias!!

    ResponderEliminar