CLR: .Net / Mono / Boo / Otros CLR > C#

 Contador de caracteres NO alfanumericos

(1/1)

csrkstro:
hola!!

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

tannke:
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# ---string texto = Console.ReadLine();            int numero = 0;             for (int i = 0; i < texto.Length;i++ )            {                char a=texto[i];                if ((a < 48) | (a >57 & a<65) | (a>90 & a<97) | (a>122))                {                    numero++;                }            }            Console.WriteLine(numero);            Console.ReadLine(); 
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:
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:
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# ---static void Main(string[] args)        {             string  texto = Console.ReadLine();             int Alfanumericos = 0;             int NOalfanumericos = 0;              for (int i = 0; i < texto.Length; i++)             {                 char a = texto[i];                  //Estos  serian los alfanumericos (mayusculas, minusculas, acentuados, con dieresis, etc)                 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))                     Alfanumericos++;                  //Pues aqui los no alfanumericos                 else NOalfanumericos++;             }              Console.WriteLine("Total Alfanumericos: {0}", Alfanumericos);             Console.WriteLine("Total NO Alfanumericos: {0}", NOalfanumericos);             Console.ReadKey();        } 
Espero te sea util. No creo que sea muy largo, ya solo te quedaría adaptarlo a tu winform. Un saludo

Newtek:
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

Navegación

[0] Índice de Mensajes

Ir a la versión completa