Archivo de la etiqueta: netcore

Contar las palabras de un texto usando expresiones regulares (RegEx)

Pues eso… que estoy preparando el artículo para usar dos RichTextBox de WPF sincronizados y esta es una de las cosas que allí (cuando lo publique) te explicaré. Hay muchas cosas que te tengo que explicar, así que… hoy empiezo por la más simple o que menos texto necesita Winking smile

Esto es sencillo, pero… lo necesité para mostrar el número de palabras del documento activo (en el ejemplo de los RichTextBox sincronizados voy a usar 2 RichTextBox y un TextBox, los tres sincronizados -si así lo decides- ) y no lo investigué… preferí buscar una solución que alguien haya publicado ya… es que esto de las expresiones regulares, más que regulares son malas jajajajaja.

En serio, encontré un sitio web, en realidad un foro de Microsoft en el que alguien respondía con el código que te voy a mostrar, eso sí, el código original está en C# y para la aplicación base (ya sabes que empiezo escribiendo los ejemplos o mis aplicaciones con Visual Basic para .NET).

Una vez que se ve el código, uno dice… ¡pos qué fácil era! pero como todas estas cosas, hay que hacerlo primero Winking smile

Este es el código de una función que recibe una cadena de texto y devuelve el número de palabras que hay.

La versión de Visual Basic .NET

''' <summary>
''' Contar las palabras de una cadena de texto
''' 
''' Adaptado usando una cadena en vez del Text del RichTextBox
''' (sería del RichTextBox para WinForms)
''' El código lo he adaptado de:
''' https://social.msdn.microsoft.com/Forums/en-US/
'''     81e438ed-9d35-47d7-a800-1fabab0f3d52/
'''     c-how-to-add-a-word-counter-to-a-richtextbox
'''     ?forum=csharplanguage
''' </summary>
Private Function TextWordCount(texto As String) As Integer
    Dim wordColl As MatchCollection = Regex.Matches(texto, "[\W]+")
    Return wordColl.Count
End Function

La versión de C#:

/// <summary>
/// Contar las palabras de una cadena de texto
/// 
/// Adaptado usando una cadena en vez del Text del RichTextBox
/// (sería del RichTextBox para WinForms)
/// El código lo he adaptado de:
/// https://social.msdn.microsoft.com/Forums/en-US/
///     81e438ed-9d35-47d7-a800-1fabab0f3d52/
///     c-how-to-add-a-word-counter-to-a-richtextbox
///     ?forum=csharplanguage
/// </summary>
private int TextWordCount(string texto)
{
    MatchCollection wordColl = Regex.Matches(texto, @"[\W]+");
    return wordColl.Count;
}

Aquí tienes un ejemplo de uso en una aplicación de consola de .NET Core para Visual Basic y la salida del código.

Imports System
Imports System.Text.RegularExpressions

Module Program
    Sub Main(args As String())
        Dim s = "Hello World de las aplicaciones de consola en .net core!"
        Console.WriteLine(s)
        Dim w = TextWordCount(s)

        Console.WriteLine($"la cadena anterior tiene {w} palabras")

        Console.ReadKey()
    End Sub

    ''' <summary>
    ''' Contar las palabras de una cadena de texto
    ''' 
    ''' Adaptado usando una cadena en vez del Text del RichTextBox
    ''' (sería del RichTextBox para WinForms)
    ''' El código lo he adaptado de:
    ''' https://social.msdn.microsoft.com/Forums/en-US/
    '''     81e438ed-9d35-47d7-a800-1fabab0f3d52/
    '''     c-how-to-add-a-word-counter-to-a-richtextbox
    '''     ?forum=csharplanguage
    ''' </summary>
    Private Function TextWordCount(texto As String) As Integer
        Dim wordColl As MatchCollection = Regex.Matches(texto, "[\W]+")
        Return wordColl.Count
    End Function

End Module

Y esta es la salida por la consola de ese código.

Y esto es todo. Smile

¡Mañana más!

Nos vemos.
Guillermo

P.S.
Ese código funciona también en .NET Core, la captura es de una aplicación de consola de .NET Core

¿Quieres aprender a programar usando .NET Core sin instalar nada?

Pues eso… me he metido en la página de instalación del .NET Core 3.0 SDK y he visto un botón con el enlace «Get Started» (ver la figura 1) y me ha llevado a la página de .NET Tutorial – Hello World in 10 minutes y en la parte de la izquierda he visto un botón con el texto Try .NET in your browser (ver figura 2) y lo he pulsado… y me ha llevado a una página en la que te va explicando las cosas básicas para crear una aplicación de consola, empezando con el clásico «Hello World!» (ver figura 3) que después ha pasado al «Hello Guillermo!» (o tu nombre) y ha seguido haciendo cambios y enseñando algunas cosas, que al menos yo ya había leído, pero así lo he tenido más claro (ver figura 4)…. bueno, es curioso más que nada… y no acaba ahí la cosa (yo no he seguido) pero se ve que sigue con otras cosas como trabajar con números, aunque esta vez ha cambiado el formato, pero básicamente es en el mismo tono (ver figuras 5 y 6), así que… te lo recomiendo ya que las cosas que incluyen son:

Análisis de las operaciones matemáticas con enteros
Análisis sobre el orden de las operaciones
Información sobre los límites y la precisión de los enteros
Operaciones con el tipo double
Operaciones con tipos de punto fijo

Eso sí, todo con puntos y comas… Smile

Las capturas

Figura 1. Get Started en la página de descarga del .NET Core 3.0 SDK
Figura 1. Get Started en la página de descarga del .NET Core 3.0 SDK

Figura 1.

Figura 2. El tutorial con el botón de Try .NET in your browser
Figura 2. El tutorial con el botón de Try .NET in your browser

Figura 2.

Figura 3. El tutorial de .NET In-Browser
Figura 3. El tutorial de .NET In-Browser

Figura 3.

Figura 4. String Interpolation
Figura 4. String Interpolation

Figura 4.

Figura 5. Aquí acaba el tutorial .NET In-Browser
Figura 5. Aquí acaba el tutorial .NET In-Browser

Figura 5.

Figura 6. El tutorial de C# sigue con el compilador In-Browser
Figura 6. El tutorial de C# sigue con el compilador In-Browser

Los enlaces:

Espero que si no te es de utilidad al menos te relaje un poco… jajajaja

Nos vemos.
Guillermo