none
Resaltar texto entre comillas en un RichTextBox

    Pregunta

  • Hola.

    Tenía la siguiente pregunta. Tengo un RichTextBox en el cual se pueden editar fragmentos de código de Python y otros lenguajes de programación. Ya he logrado resaltar palabras clave y comentarios de solo 1 linea, pero lo que ahora necesito es resaltar de color verde el texto que se ubica entre comillas dobles.

    Si no me he explicado muy bien, me lo pueden decir y se los trataré de explicar mejor.

    Gracias de antemano.


    Pablo Gonzalez - Programando el futuro

    sábado, 11 de marzo de 2017 22:52

Respuestas

  • Hola Pablo Gonzalez Calderon,

    Puedes ayudar usando la clase Regex y mediante una expresión obtener todos los valores que tengan comillas dobles y luego recorrer el resultado y cambiar de color una por una mediante un 'For Each'.

    Algo como :

    For Each match As Match In Regex.Matches(RichTextBox1.Text, "\"".*?\""")
    
        RichTextBox1.Select(RichTextBox1.Find(match.ToString()) + 1, match.ToString().Length - 2)
    
        RichTextBox1.SelectionColor = Color.Yellow
    Next

    Resultado : Se puede apreciar en la imagen que la primera línea tiene comillas simples por lo que los omite.

    Lo que hace la función Matches (según el ejemplo) es retornar una colección con las coincidencias, el resultado sería :

    "Python Programming"
    "var1[0]: "
    "var2[1:5]: "

    De ahí se resta las posiciones de las 'comillas dobles' para obtener el valor interno.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    domingo, 12 de marzo de 2017 0:07

Todas las respuestas

  • Hola Pablo Gonzalez Calderon,

    Puedes ayudar usando la clase Regex y mediante una expresión obtener todos los valores que tengan comillas dobles y luego recorrer el resultado y cambiar de color una por una mediante un 'For Each'.

    Algo como :

    For Each match As Match In Regex.Matches(RichTextBox1.Text, "\"".*?\""")
    
        RichTextBox1.Select(RichTextBox1.Find(match.ToString()) + 1, match.ToString().Length - 2)
    
        RichTextBox1.SelectionColor = Color.Yellow
    Next

    Resultado : Se puede apreciar en la imagen que la primera línea tiene comillas simples por lo que los omite.

    Lo que hace la función Matches (según el ejemplo) es retornar una colección con las coincidencias, el resultado sería :

    "Python Programming"
    "var1[0]: "
    "var2[1:5]: "

    De ahí se resta las posiciones de las 'comillas dobles' para obtener el valor interno.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    domingo, 12 de marzo de 2017 0:07
  • Muchas gracias.

    Si me pudieras ayudar a encontrar la expresión regular para resaltar o cambiar el color de texto entre comillas dobles, pero que pueda empezar en una línea y terminar en otra.


    Pablo Gonzalez - Todo es posible


    domingo, 12 de marzo de 2017 13:20