viernes, 23 de septiembre de 2011

[WinForm] - Eliminar codigo html de texto

Buen Día a todos! este es un pequeño y práctico ejercicio de como eliminar por ejemplo las etiquetas <b> y </b> que vienen a ser el relleno Negrita que hace algún tiempo ayude a un usuario solicitando esto y me pareció adecuado postearlo en el blog. Como podrán observar se hace un recorrido de toda la cadena :

Codigo VB.NET :

        Dim nuevaCadena As String = ""
        Dim s as String = "<b>Programacion </b>.Net <b>Facil</b>, verdad <b>que </b>es <b>facil</b>? =)"
        Dim a As Char() = s.ToCharArray
        Dim cont As Integer = 0
 
        For i As Integer = 0 To Label1.Text.Length - 1
            If (a(i).ToString.Equals("<")) Then
                If (a(i + 1).ToString.Equals("/")) Then
                    If (a(i + 2).ToString.Equals("b")) Then
                        If (a(i + 3).ToString.Equals(">")) Then
                            cont = i + 4
                        End If
                    End If
                End If
                If (a(i + 1).ToString.Equals("b")) Then
                    If (a(i + 2).ToString.Equals(">")) Then
                        cont = i + 3
                    End If
                End If
            End If
            If (i >= cont) Then
                nuevaCadena = nuevaCadena & a(i).ToString
            End If
        Next
        MessageBox.show(nuevaCadena)

Original :
Programacion .Net Facil, verdad que es facil? =) --> <b>Programacion </b>.Net <b>Facil</b>, verdad <b>que </b>es <b>facil</b>? =)

Resultado : 
Programacion .Net Facil,verdad que es facil? =)

Espero les haya sido de utilidad. Saludos!.

1 comentario:

  1. Perdón si puedo parecer brusco, pero nada más lejos de mis intenciones...

    Esto es una auténtica locura:

    Primero, que meter una condicional dentro de un bucle en .NET esta considerado ya casi un delito teniendo LINQ... más todavía anidar condicionales.
    Ese código porque es pequeño, pero en un html de 2500 líneas, consumes recursos y tiempo a lo bestia.

    Segundo, puedes eliminar, no solo los tags "", si no todos los tags de una tacada con este código:

    Dim s as String = "Programacion .Net Facil, verdad que es facil? =)"

    MessageBox.show(RegularExpressions.Regex.Replace(s, "<[^>]*>", String.Empty))

    Una sola línea. Sin bucles, sin condicionales, sin más... y optimizado para lo que queremos.

    Meted un html extenso y sacad los tiempos por pantalla que tarda cada uno de ellos. Notareis una diferencia abismal.

    Espero os sirva de ayuda!

    ResponderEliminar