elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  ¿Cómo encontrar una cadena dentro de un párrafo de texto?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Cómo encontrar una cadena dentro de un párrafo de texto?  (Leído 3,941 veces)
Juancho25

Desconectado Desconectado

Mensajes: 28


Ver Perfil
¿Cómo encontrar una cadena dentro de un párrafo de texto?
« en: 7 Junio 2013, 08:01 am »

Hola, me gustaría saber qué hacer para encontrar una cadena de texto dentro de un párrafo de texto más extenso en Windows Forms, por ejemplo, yo ingreso lo siguiente en un textBox:

<a href="http://1.bp.blogspot.com/-NhL7eyZF_bM/UC6AO7LanyI/AAAAAAAADNw/VkfXa-fNxpA/s1600/glucides-vitamines-fruits.jpg"/> <a href="http://1.bp.blogspot.com/-NhL7eyZF_bM/UC6AO7LanyI/AAAAAAAADNw/VkfXa-fNxpA/s1600/glucides-vitamines-fruits11.jpg"/>


y lo que me gustaría encontrar para que lo mostrara en otro textBox es solamente http://1.bp.blogspot.com/-NhL7eyZF_bM/UC6AO7LanyI/AAAAAAAADNw/VkfXa-fNxpA/s1600/glucides-vitamines-fruits.jpg y http://1.bp.blogspot.com/-NhL7eyZF_bM/UC6AO7LanyI/AAAAAAAADNw/VkfXa-fNxpA/s1600/glucides-vitamines-fruits11.jpg

omitiendo <a href=" y "/> contando que podrían agregarse muchos más códigos con links en el mismo textBox. Espero haberme explicado y me puedan ayudar.


En línea

XresH


Desconectado Desconectado

Mensajes: 384



Ver Perfil WWW
Re: ¿Cómo encontrar una cadena dentro de un párrafo de texto?
« Respuesta #1 en: 7 Junio 2013, 10:37 am »

Qué lenguaje estás manejando?


Saludos.


En línea

[ - Si eres programador y quieres que tus proyectos esten en mi blog(con o sin source), consúltame! - ]
Entra A Mi Blog De Programación | | Dudas en este post :| | >>Clic para ir al Post<<
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.821



Ver Perfil
Re: ¿Cómo encontrar una cadena dentro de un párrafo de texto?
« Respuesta #2 en: 7 Junio 2013, 10:41 am »

Hay varias formas.

Si estás usando un html/xml/xmlns lo mejor quizás sería que uses htmlagilitypack: http://htmlagilitypack.codeplex.com/
...Pero es el método más dificil de entre los que existen, y dependiendo del conteido (sopa de tags) podría no serte útil en absoluto.

Puedes usar el método SPLIT : http://msdn.microsoft.com/en-us/library/system.string.split.aspx

Código
  1. for each item in variable_de_tipo_String.split(controlchars.quote) : msgbox(item) : next

O mi manera favorita, Expresiones regulares: http://en.wikipedia.org/wiki/Regular_expression

Output:
Código:
http://1.bp.blogspot.com/-NhL7eyZF_bM/UC6AO7LanyI/AAAAAAAADNw/VkfXa-fNxpA/s1600/glucides-vitamines-fruits.jpg
http://1.bp.blogspot.com/-NhL7eyZF_bM/UC6AO7LanyI/AAAAAAAADNw/VkfXa-fNxpA/s1600/glucides-vitamines-fruits11.jpg

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  4.  
  5.        Dim str As String = <a><![CDATA[<a href="http://1.bp.blogspot.com/-NhL7eyZF_bM/UC6AO7LanyI/AAAAAAAADNw/VkfXa-fNxpA/s1600/glucides-vitamines-fruits.jpg"/> <a href="http://1.bp.blogspot.com/-NhL7eyZF_bM/UC6AO7LanyI/AAAAAAAADNw/VkfXa-fNxpA/s1600/glucides-vitamines-fruits11.jpg"/>]]></a>.Value
  6.        Dim regex As String = <a><![CDATA[(http://|https://|www)([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#\$\%\^\&amp;\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?]]></a>.Value
  7.  
  8.        For Each match In RegEx_Matches_To_List(str, regex) : MsgBox(match) : Next
  9.  
  10.    End Sub
  11.  
  12. #Region " RegEx Matches To List "
  13.  
  14.    ' [ RegEx Matches To List Function ]
  15.    '
  16.    ' // By Elektro H@cker
  17.  
  18.    Private Function RegEx_Matches_To_List(ByVal str As String, ByVal RegEx_Pattern As String, _
  19.                                           Optional ByVal Group As Int32 = 0, _
  20.                                           Optional ByVal IgnoreCase As Boolean = True) _
  21.                                           As List(Of String)
  22.  
  23.        Dim regex_option As System.Text.RegularExpressions.RegexOptions
  24.  
  25.        If IgnoreCase Then regex_option = System.Text.RegularExpressions.RegexOptions.IgnoreCase _
  26.        Else regex_option = System.Text.RegularExpressions.RegexOptions.None
  27.  
  28.        Dim match As System.Text.RegularExpressions.Match = System.Text.RegularExpressions.Regex.Match(str, RegEx_Pattern, regex_option)
  29.        Dim Matches_List As New List(Of String)
  30.  
  31.        Do While match.Success
  32.            Matches_List.Add(match.Groups(Group).ToString)
  33.            match = match.NextMatch()
  34.            Application.DoEvents()
  35.        Loop
  36.  
  37.        Return Matches_List
  38.  
  39.    End Function
  40.  
  41. #End Region
  42.  
  43. End Class

Saludos.
« Última modificación: 7 Junio 2013, 11:04 am por EleKtro H@cker » En línea

Juancho25

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: ¿Cómo encontrar una cadena dentro de un párrafo de texto?
« Respuesta #3 en: 8 Junio 2013, 08:29 am »

Qué lenguaje estás manejando?


Saludos.


C++ en Windows Forms.
En línea

Juancho25

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: ¿Cómo encontrar una cadena dentro de un párrafo de texto?
« Respuesta #4 en: 8 Junio 2013, 08:33 am »

Hay varias formas.

Si estás usando un html/xml/xmlns lo mejor quizás sería que uses htmlagilitypack: http://htmlagilitypack.codeplex.com/
...Pero es el método más dificil de entre los que existen, y dependiendo del conteido (sopa de tags) podría no serte útil en absoluto.

Puedes usar el método SPLIT : http://msdn.microsoft.com/en-us/library/system.string.split.aspx

Código
  1. for each item in variable_de_tipo_String.split(controlchars.quote) : msgbox(item) : next

O mi manera favorita, Expresiones regulares: http://en.wikipedia.org/wiki/Regular_expression

Output:
Código:
http://1.bp.blogspot.com/-NhL7eyZF_bM/UC6AO7LanyI/AAAAAAAADNw/VkfXa-fNxpA/s1600/glucides-vitamines-fruits.jpg
http://1.bp.blogspot.com/-NhL7eyZF_bM/UC6AO7LanyI/AAAAAAAADNw/VkfXa-fNxpA/s1600/glucides-vitamines-fruits11.jpg

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  4.  
  5.        Dim str As String = <a><![CDATA[<a href="http://1.bp.blogspot.com/-NhL7eyZF_bM/UC6AO7LanyI/AAAAAAAADNw/VkfXa-fNxpA/s1600/glucides-vitamines-fruits.jpg"/> <a href="http://1.bp.blogspot.com/-NhL7eyZF_bM/UC6AO7LanyI/AAAAAAAADNw/VkfXa-fNxpA/s1600/glucides-vitamines-fruits11.jpg"/>]]></a>.Value
  6.        Dim regex As String = <a><![CDATA[(http://|https://|www)([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#\$\%\^\&amp;\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?]]></a>.Value
  7.  
  8.        For Each match In RegEx_Matches_To_List(str, regex) : MsgBox(match) : Next
  9.  
  10.    End Sub
  11.  
  12. #Region " RegEx Matches To List "
  13.  
  14.    ' [ RegEx Matches To List Function ]
  15.    '
  16.    ' // By Elektro H@cker
  17.  
  18.    Private Function RegEx_Matches_To_List(ByVal str As String, ByVal RegEx_Pattern As String, _
  19.                                           Optional ByVal Group As Int32 = 0, _
  20.                                           Optional ByVal IgnoreCase As Boolean = True) _
  21.                                           As List(Of String)
  22.  
  23.        Dim regex_option As System.Text.RegularExpressions.RegexOptions
  24.  
  25.        If IgnoreCase Then regex_option = System.Text.RegularExpressions.RegexOptions.IgnoreCase _
  26.        Else regex_option = System.Text.RegularExpressions.RegexOptions.None
  27.  
  28.        Dim match As System.Text.RegularExpressions.Match = System.Text.RegularExpressions.Regex.Match(str, RegEx_Pattern, regex_option)
  29.        Dim Matches_List As New List(Of String)
  30.  
  31.        Do While match.Success
  32.            Matches_List.Add(match.Groups(Group).ToString)
  33.            match = match.NextMatch()
  34.            Application.DoEvents()
  35.        Loop
  36.  
  37.        Return Matches_List
  38.  
  39.    End Function
  40.  
  41. #End Region
  42.  
  43. End Class

Saludos.

Intenté entenderlo pero se me complicó, no sé muy bien de ese lenguaje y sé más de C++ en Windows Forms. Si pudieras ponerlo en el lenguaje que te menciono te lo agradecería.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.821



Ver Perfil
Re: ¿Cómo encontrar una cadena dentro de un párrafo de texto?
« Respuesta #5 en: 8 Junio 2013, 08:36 am »

Intenté entenderlo pero se me complicó, no sé muy bien de ese lenguaje y sé más de C++ en Windows Forms. Si pudieras ponerlo en el lenguaje que te menciono te lo agradecería.

Cita de: Elektro H@cker
Código
  1. Dim regex As String = <a><![CDATA[(http://|https://|www)([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#\$\%\^\&amp;\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?]]></a>.Value


No, no sé C/C++/C#,
Copia ese RegEx, conviértelo a la sintaxis adecuada de C++ usando la aplicación "RegExBuddy", y ya tienes la primera parte del problema solucionada, el resto solo sería que aprendieses a usar las expresiones regulares en C++ (si no supieras).

Saludos
« Última modificación: 8 Junio 2013, 08:38 am por EleKtro H@cker » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Cómo sacar un texto dentro de otro otros textos?
.NET (C#, VB.NET, ASP)
Tzdah 1 2,409 Último mensaje 28 Julio 2013, 13:00 pm
por z3nth10n
Error programa encontrar una cadena dentro de otra
Programación C/C++
David8 8 3,663 Último mensaje 9 Abril 2014, 16:06 pm
por David8
Encontrar una cadena en el final de otra en python
Scripting
Schaiden 2 2,343 Último mensaje 10 Febrero 2017, 00:30 am
por Sk9ITk5Z
Encontrar cadena para conexión a BD
Programación Visual Basic
alsoor 2 2,449 Último mensaje 8 Diciembre 2017, 03:05 am
por alsoor
Array de una cadena de datos, vuelta parrafo
Programación C/C++
Wilber592 3 1,538 Último mensaje 27 Septiembre 2018, 17:55 pm
por Wilber592
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines