Comunidad de diseño web y desarrollo en internet online

¿se puede detectar si hay una letra en una cadena d numeros?

Citar            
MensajeEscrito el 15 Feb 2010 10:33 pm
Hola a todos :D

Supongamos que tenemos las siguientes cadenas

var telefonobien="00 96-123-456";
var telefonomal ="00 96a123-456";

¿Hay alguna funcion o forma de detectar que en la segunda cadena ejemplo hay algo más que números excluyendo espacios y algún signo (como por ejemplo el guión)?

Es decir, si sólo hay números, espacios o algún signo especial (como el guión) todo ok, pero si detecta una letra, que me avise de ello para mostrar un error. Es que claro, al incluir espacios y otras cosas como guiones, no puedo guardar directamente el telefono como un número, y tampoco me interesa porque quiero dar la libertad al usuario de usar espacios y guiones.

¿cómo se puede hacer eso? No se me ocurre :oops:

Por daniel69

78 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Feb 2010 10:48 pm
Hola,

Para saber si un carácter es número o letra, podrías dividir el carácter entre si mismo y evaluar si el resultado es 1. En caso positivo, es un número, en caso negativo es una letra u otro símbolo.

En caso de que no sea un número, para distinguir los carácteres especiales (espacio, guión, asterisco, etc.) basta con que hagas una comparación directa (puedes guardar estos caracteres especiales en un array).

Todo esto, con un for que dure la longitud de la cadena que quieras explorar.

Espero que te sirva.

Un saludo.

Por flashstuff

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Feb 2010 11:37 pm
Hola flashstuff

Ni en mil años habría pensado eso.
Pues nada, haré una función que recorra la cadena y haga justo lo que me has dicho.

Muchas gracias :)

Por daniel69

78 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Feb 2010 10:36 am
Nada no hay manera.

Si divido una letra a letra una cadena por si misma siempre me da 1.

Lo he intentado de otra forma,que es convertir a entero, cuando es un numero da el número y cuando no da NaN.
El problema es que NaN = 0, así que no puedo diferencia un 0 de una letra.

Os dejo aquí el código:

Código :

var cadena="0123e-";

for(i=0;i<cadena.length;i++)
{
   aEvaluar = cadena.substring(i, i+1);
   trace(parseInt(aEvaluar));
   if( parseInt(aEvaluar)<>'NaN')
   {
      if( (parseInt(aEvaluar)=>0 && parseInt(aEvaluar)<=9))
      trace('ok');
      else trace('no es numero');
   }
   else
   trace('letra o simbolo');
}

:(

Por daniel69

78 de clabLevel



 

chrome
Citar            
MensajeEscrito el 17 Feb 2010 01:03 pm
Prueba con esto:

Código ActionScript :

caracteresEspeciales = ["-",":","/","0"," "];
numeroTelefono = "00 23-123543 a";

function checkString(cadena){
   cadenaValida = true;
   
   for(i=0;i<cadena.length;i++){
      if(Number(cadena.charAt(i))/Number(cadena.charAt(i)) == 1){
         //trace(cadena.charAt(i) + " : Numero");
      }
      else{
         permitido = false;
         for(j=0;j<caracteresEspeciales.length;j++){
            if(cadena.charAt(i) == caracteresEspeciales[j]){
               //trace(cadena.charAt(i) + " : Caracter permitido");
               permitido = true;
               break;
            }
         }
         if(!permitido){
            //trace(cadena.charAt(i) + " : Letra");
            cadenaValida = false;
         }
      }
   }
   return(cadenaValida);
}

trace("Cadena válida: " + checkString(numeroTelefono));


Un saludo.

Por flashstuff

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Feb 2010 11:30 pm
Hola flashstuff

No he podido conectarme antes por cosas del trabajo
Funciona perfectamente. Muchas gracias :D

No conocía CharAt

Por daniel69

78 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.