• Domingo 12 de Mayo de 2024, 14:39

Autor Tema:  Contador de caracteres NO alfanumericos  (Leído 3009 veces)

csrkstro

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Contador de caracteres NO alfanumericos
« en: Martes 1 de Junio de 2010, 07:30 »
0
hola!!

Quiero saber como se puede hacer para contar los caracteres NO alfanumericos de un texto en un textbox.

tannke

  • Miembro MUY activo
  • ***
  • Mensajes: 152
  • Nacionalidad: es
    • Ver Perfil
Re: Contador de caracteres NO alfanumericos
« Respuesta #1 en: Martes 1 de Junio de 2010, 20:11 »
0
bueno, te lo pongo en modo consola, en este caso leo el texto con un readline(), lo tuyo seria lo mismo pero con texbox1.text. Bueno mas o menos es un ejemplo para que te puedas hacer una idea, en este caso los caracteres que no cuenta son los de la ( 'a' a la 'z') de la ('A' a la 'Z') y del ( '0' al '9') es decir, letras con acentos, la 'ñ', etc los contaria como NO alfanumeicos. Pero weno, esto es cojerte el codigo ANSI o ASCII e ir metiendo ahi los que no quieras que te cuenten

Va el ejemplo y luego lo explico:

Código: C#
  1. string texto = Console.ReadLine();
  2.             int numero = 0;
  3.  
  4.             for (int i = 0; i < texto.Length;i++ )
  5.             {
  6.                 char a=texto[i];
  7.                 if ((a < 48) | (a >57 & a<65) | (a>90 & a<97) | (a>122))
  8.                 {
  9.                     numero++;
  10.                 }
  11.             }
  12.             Console.WriteLine(numero);
  13.             Console.ReadLine();
  14.  

bucle con tantas repeticiones como caracteres tenga la frase. ('a' es el caracter que comparamos) y la comparación la hacemos al nivel char como caracter ASII. Bueno, no se como explicar muy bien, la cuestión es ir metiendo en el 'if' todos los caracteres que no sean alganumericos, o si te resulta mas facil hacerlo al revés, meter los alfanumericos deseados y en ese caso no contar en el if sino en el else.

Bueno, se que no explique nada bien, espero que almenos veas la idea de hacerlo.

Si no lo entiendes avisa, alomejor en otro momento estoy un poco mas inspirado. Saludos

csrkstro

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Contador de caracteres NO alfanumericos
« Respuesta #2 en: Miércoles 2 de Junio de 2010, 06:55 »
0
gracias por tu ayuda!!!

lo que me quieres decir es que haga if con cada caracter que no quiero contar???

no habra una forma de hacerlo mas abreviado.

tannke

  • Miembro MUY activo
  • ***
  • Mensajes: 152
  • Nacionalidad: es
    • Ver Perfil
Re: Contador de caracteres NO alfanumericos
« Respuesta #3 en: Miércoles 2 de Junio de 2010, 16:35 »
0
No te creas que es tanto, mira aqui te lo posteo comleto, solo que esta vez al revés. Si no me equivoco (que ando algo espeso desde hace unos dias) aquí estan en el 'if' todos los alfanumericos, por lo que en el 'else' estaian los no alfanumericos:

Código: C#
  1. static void Main(string[] args)
  2.         {
  3.              string  texto = Console.ReadLine();
  4.              int Alfanumericos = 0;
  5.              int NOalfanumericos = 0;
  6.  
  7.              for (int i = 0; i < texto.Length; i++)
  8.              {
  9.                  char a = texto[i];
  10.  
  11.                  //Estos  serian los alfanumericos (mayusculas, minusculas, acentuados, con dieresis, etc)
  12.                  if ((a > 47 & a < 57) | (a > 64 & a < 91) | (a > 96 & a < 123) | (a > 192 & a != 215 & a != 222 & a != 247 & a != 248 & a != 254))
  13.                      Alfanumericos++;
  14.  
  15.                  //Pues aqui los no alfanumericos
  16.                  else NOalfanumericos++;
  17.              }
  18.  
  19.              Console.WriteLine("Total Alfanumericos: {0}", Alfanumericos);
  20.              Console.WriteLine("Total NO Alfanumericos: {0}", NOalfanumericos);
  21.              Console.ReadKey();
  22.         }
  23.  

Espero te sea util. No creo que sea muy largo, ya solo te quedaría adaptarlo a tu winform. Un saludo
« última modificación: Miércoles 2 de Junio de 2010, 16:46 por tannke »

Newtek

  • Miembro activo
  • **
  • Mensajes: 81
  • Nacionalidad: cr
    • Ver Perfil
    • http://www.newtekwebhosting.com.com?id=000231
Re: Contador de caracteres NO alfanumericos
« Respuesta #4 en: Miércoles 2 de Junio de 2010, 16:40 »
0
El ejemplo de tannke es muy bueno sin embargo y ya que preguntastes por una formas mas abvefiada de hacerlo yo te aconsejaria que usaras un Case en lugar del If eso va a hacer el codigo mas rapido.

Por otro lado tambien se podria pensar en hacerlo recursivo para que no tengas que escribir tanto codigo. Sabes recursividad

Avisanos si ocupas mas ayuda.


Carlos Cor.
Crystaltech