none
Contar letras en una frase.

    Question

  • Hola que tal , tengo un problem lo que pasa es que tegno un problema que me pide que ingrese un texto y comienze a contar:
    Nº de letras
    Nº de digitos
    Nº de Espacios En Blanco
    Nº de Lineas
    Nº de otros caracteres.

    Bueno hice que contara los numeros , los espacion en blanco y de referencia puse un contador de vocales, pero seben contar las letras.

    Aqui posteo el codigo:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication15
    {
        class Program
        {
            static void Main(string[] args)
            {
                string a, b = "";          
                int cont1 = 0,cont2=0,cont3=0;
                Console.WriteLine("Ingrese una frase");
                a = Console.ReadLine();
                for (int i = 0; i < a.Length; i++)
                {                
                    b = a.Substring(i,1 );
                    if ((b == "a") | (b == "e") | (b == "i") | (b == "o") | (b == "u"))
                    {
                        cont1++;
                    }
                    if ((b == "0") | (b == "1") | (b == "2") | (b == "3") | (b == "4") | (b == "5") | (b == "6") | (b == "7") | (b == "8") | (b == "9"))
                    {
                        cont2++;
                    }
                    if (b.Contains(" "))/*este comando verifica si existe dentro pero no se como se puede hacer para poner varios terminos*/
                    {
                        cont3++;
                    }                 
                }
                Console.WriteLine("");
                Console.WriteLine("La cantidad de vocales en la frase ingresada es:");
                Console.WriteLine("Cantidad de vocales: {0}", cont1);
                Console.WriteLine("Cantidad de digitos: {0}", cont2);
                Console.WriteLine("Cantidad de Caracter en Blanco: {0}", cont3);       
                Console.ReadLine();
            }
        }
    }


    Lo que al menos entiendo,no se si es que hay una forma de que cuente las letras , es decir un comando en c#, o tengo que poner cada letra como condicion en el if como puse para los numeros, y los otros caracteres, es asi los debo poner en un if a todo o existe otra forma para ahorrar programacion,Y se me olvidaba como hago para contar las lineas ya que al presionar el enter termina, porfas lo de las lineas no se como se puede hacer,grax de antemano,Saludos
    Friday, October 09, 2009 10:57 PM

Answers

  • Hola,

    siempre puedes utilizar expresiones regulares. Por ejemplo: 

    MatchCollection matches;
    Regex regex;
    
    string Phrase = ...;
    
    // cuenta número de letras de la a a la z, y de la A a la Z
    regex = new Regex(@"([a-z][A-Z]*)");
    matches = regex.Matches(Phrase);
    Console.WriteLine("Se encontraron {0} letras. ", matches.Count);
    
    // cuenta número de dígitos
    regex = new Regex(@"([0-9])");
    matches = regex.Matches(Phrase);
    Console.WriteLine("Se encontraron {0} dígitos. ", matches.Count);
    
    // cuenta espacios en blanco, enters, tabs, etc
    regex = new Regex(@"(\s)");
    matches = regex.Matches(Phrase);
    Console.WriteLine("Se encontraron {0} espacios en blanco. ", matches.Count);
    
    // cuenta saltos de línea
    regex = new Regex(@"(\n)");
    matches = regex.Matches(Phrase);
    Console.WriteLine("Se encontraron {0} líneas. ", matches.Count + 1);
    
    // cuenta vocales
    regex = new Regex(@"([aeiou])");
    matches = regex.Matches(Phrase);
    Console.WriteLine("Se encontraron {0} vocales.", matches.Count);
    
    // etc

    Te dejo un enlace a un artí____ muy bueno de RegEx, por si te interesa:

    Saludos.


    Fernando Gómez
    www.fermasmas.com
    Friday, October 09, 2009 11:32 PM


  • hola que tal como hago para contar las lineas, en el string prase como le hago para ke cuenta las lineas ingresadas,Saludos
    Crea un StringReader, luego utilizar el metodo ReadLine para recorrer todas las lineas de la cadena hasta el final y de paso llevas la cuenta.



    Colabora con la comunidad, si éste mensaje te ha sido de utilidad, márcalo como respuesta correcta.
    Juan Carlos Ruiz Pacheco
    Ingeniero de Sistemas
    Microsoft MVP C#
    MCP,MCTS,DCE+Platino,OCA,OCP
    Visita Mi Blog C# XNA Sistemas Operativos
    Sunday, October 11, 2009 2:48 AM

All replies

  • Hola,

    siempre puedes utilizar expresiones regulares. Por ejemplo: 

    MatchCollection matches;
    Regex regex;
    
    string Phrase = ...;
    
    // cuenta número de letras de la a a la z, y de la A a la Z
    regex = new Regex(@"([a-z][A-Z]*)");
    matches = regex.Matches(Phrase);
    Console.WriteLine("Se encontraron {0} letras. ", matches.Count);
    
    // cuenta número de dígitos
    regex = new Regex(@"([0-9])");
    matches = regex.Matches(Phrase);
    Console.WriteLine("Se encontraron {0} dígitos. ", matches.Count);
    
    // cuenta espacios en blanco, enters, tabs, etc
    regex = new Regex(@"(\s)");
    matches = regex.Matches(Phrase);
    Console.WriteLine("Se encontraron {0} espacios en blanco. ", matches.Count);
    
    // cuenta saltos de línea
    regex = new Regex(@"(\n)");
    matches = regex.Matches(Phrase);
    Console.WriteLine("Se encontraron {0} líneas. ", matches.Count + 1);
    
    // cuenta vocales
    regex = new Regex(@"([aeiou])");
    matches = regex.Matches(Phrase);
    Console.WriteLine("Se encontraron {0} vocales.", matches.Count);
    
    // etc

    Te dejo un enlace a un artí____ muy bueno de RegEx, por si te interesa:

    Saludos.


    Fernando Gómez
    www.fermasmas.com
    Friday, October 09, 2009 11:32 PM
  • Hola,

    siempre puedes utilizar expresiones regulares . Por ejemplo: 

    MatchCollection matches;
    Regex regex;

    string Phrase = ...;

    // cuenta número de letras de la a a la z, y de la A a la Z
    regex = new Regex(@"([a-z][A-Z]*)" );
    matches = regex.Matches(Phrase);
    Console.WriteLine("Se encontraron {0} letras. " , matches.Count);

    // cuenta número de dígitos
    regex = new Regex(@"([0-9])" );
    matches = regex.Matches(Phrase);
    Console.WriteLine("Se encontraron {0} dígitos. " , matches.Count);

    // cuenta espacios en blanco, enters, tabs, etc
    regex = new Regex(@"(\s)" );
    matches = regex.Matches(Phrase);
    Console.WriteLine("Se encontraron {0} espacios en blanco. " , matches.Count);

    // cuenta saltos de línea
    regex = new Regex(@"(\n)" );
    matches = regex.Matches(Phrase);
    Console.WriteLine("Se encontraron {0} líneas. " , matches.Count + 1);

    // cuenta vocales
    regex = new Regex(@"([aeiou])" );
    matches = regex.Matches(Phrase);
    Console.WriteLine("Se encontraron {0} vocales." , matches.Count);

    // etc

    Te dejo un enlace a un artí____ muy bueno de RegEx, por si te interesa:

    Saludos.


    Fernando Gómez
    www.fermasmas.com


    hola que tal como hago para contar las lineas, en el string prase como le hago para ke cuenta las lineas ingresadas,Saludos
    Saturday, October 10, 2009 1:27 AM
  • hola

    si quieres solo probarlo puedfes hacerlo con algo como esto

    string Phrase = @"linea1
                               line2
                               linea3";

    como veras en el @ permite crear cadenas multilinea, calculo que las expresiones regulares que define Fernando deberian detectarlas

    igual sino la otro alternativa es que cargues un archivo de texto, un simple txt como input para procesar, allí si podrás escribir mutiples lineas en su contenido.

    saludos

    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Saturday, October 10, 2009 4:07 AM


  • hola que tal como hago para contar las lineas, en el string prase como le hago para ke cuenta las lineas ingresadas,Saludos
    Crea un StringReader, luego utilizar el metodo ReadLine para recorrer todas las lineas de la cadena hasta el final y de paso llevas la cuenta.



    Colabora con la comunidad, si éste mensaje te ha sido de utilidad, márcalo como respuesta correcta.
    Juan Carlos Ruiz Pacheco
    Ingeniero de Sistemas
    Microsoft MVP C#
    MCP,MCTS,DCE+Platino,OCA,OCP
    Visita Mi Blog C# XNA Sistemas Operativos
    Sunday, October 11, 2009 2:48 AM
  • Hola!

    Convierte tu cadena de texto a un arreglo de caracteres.


    char [] caracteres=cadena.ToCharArray();
    intcontador=0;

    for (int i=0; i<caracteres.Lenght; i++)
    {
              if (char.IsLetter(caracteres[i]))
                  contador++;
    }

    listo el contador te regresara el numero de letras que se encuentren en tu cadena de texto.
    DavidDDR david_fer1@hotmail.com
    Thursday, October 29, 2009 5:45 PM