· Andrés Ledo · NET  · Lectura en 2 min

C# Contar palabras de un texto con .NET

Un ejercicio común en los estudios o incluso en una entrevista de trabajo es pedirte que hagas una función que cuente las palabras de un texto y las muestre por pantalla.

Un ejercicio común en los estudios o incluso en una entrevista de trabajo es pedirte que hagas una función que cuente las palabras de un texto y las muestre por pantalla.

El ejercicio en sí no es demasiado difícil y hay bastantes formas diferentes de hacerlo, una de ellas puede ser utilizar la función .Split para que nos separe las palabras del texto, una vez hecho esto debemos almacenar la palabra en un diccionario o en un array junto con la cantidad de veces que aparece en el texto.

Con cada elemento del resultado del Split debemos comprobar si existe en nuestro diccionario. En caso de que no exista lo agregamos como Key con valor 1 y si existe le sumamos uno al valor de la palabra.

Por último, solo nos quedaría mostrarlo por pantalla y listo, ejercicio resuelto. Si quieres probar si has hecho bien, el ejercicio recuerda que tenemos una herramienta para contar palabras online, en esta web.

Código fuente para contar palabras en C#

He preparado un código fuente muy sencillo que cuenta las palabras y las muestra en una aplicación de consola.

static void Main(string[] args)
        {
            var text = GetText();
            //Eliminar el texto símbolos y demás que no nos interesen.
            string cleanText = text.ToLower().Replace(",", "").Replace(".", "").Replace(";", "").Replace("¿", "").Replace("?", "");
            Dictionary<string, int> wordsCount = new();
            //Separamos el texto por espacios, saltos de linea. El StringSplitOptions.RemoveEmptyEntries sirve para que no se guarden entradas vacias en el array
            var arrText = cleanText.Split(
                " ",               
                StringSplitOptions.RemoveEmptyEntries
                );
            foreach (var word in arrText)
            {
                string wordLower = word.ToLower();
                //Comprobamos si la palabra ya existe en el diccionario.
                if (wordsCount.ContainsKey(wordLower))
                {
                    //Si existe le sumamos una repetición más.
                    wordsCount[wordLower] = wordsCount[wordLower] + 1;
                }
                else
                {
                    //Si no, la agregamos al diccionario con valor 1. 
                    wordsCount.Add(wordLower, 1);
                }
            }
            //Ordenamos el diccionario de mayor a menor
            var sortedDict = wordsCount.OrderByDescending(x => x.Value).ToDictionary(x => x.Key, x => x.Value);
            //Mostramos las palabras por consola con sus repeticiones
            foreach (var word in sortedDict)
            {
                Console.WriteLine($"{word.Key} tiene {word.Value} repeticiones");
            }
        }
static string GetText()
        {
            string text = @"Hola Hola Hola, Soy un un texto cualquiera...";
            return text;
        }

Si te fijas en el código algunos símbolos para que no nos cuente como palabras diferentes en caso de que tengan algún símbolo y aparte le paso el parámetro StringSplitOptions.RemoveEmptyEntries para que no nos guarde valores en blanco en el Split.

El código puede mejorarse añadiendo eliminando más símbolos, quitando los tildes a las palabras y añadiendo que el Split también tenga en cuenta saltos de línea, pero para que te hagas una idea ya te sirve.

    Compartir
    Volver al blog

    Artículos relacionados

    Ver todos los artículos »
    Switch en C#: Guía Completa

    Switch en C#: Guía Completa

    La estructura switch ofrece una alternativa más limpia y organizada a múltiples if-else encadenados, permitiendo a los programadores gestionar varias...

    C#: Tutorial Entity Framework

    C#: Tutorial Entity Framework

    Para algunos utilizar Entity Framework es confuso, sobre todo si nunca has trabajado con un ORM, en esta especie de tutorial voy a ayudarte a...

    Mejores hostings gratis

    Mejores hostings gratis

    Encuentra el mejor hosting gratuito para tu proyecto con nuestra guía detallada. No pierdas más tiempo y comienza a construir tu sitio web hoy mismo.