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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Encontrar texto
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Encontrar texto  (Leído 2,944 veces)
dPix

Desconectado Desconectado

Mensajes: 222


¬_¬ - ¬O.o


Ver Perfil
Encontrar texto
« en: 2 Septiembre 2006, 21:53 pm »

Hola wenas, a ver, tengo que buscar una cadena (una dirección web) dentro de un código de fuente (text1) y la tengo que encontrar sabiendo que antes de ella esta el texto "<font color=#008000>" y después de ella está "</font><nobr>", ¿cómo puedo coger solo la página web? Lo he intentado así:


Código:
Private Sub Command1_Click()
Dim primercaracter As Integer
Dim segundocaracter As Integer
Dim cadena As String
primercaracter = InStr(primercaracter + 1, Text1.Text, "<font color=#008000>")
segundocaracter = InStr(primeracaracter + 1, Text1.Text, "</font><nobr>") - primercaracter - 20
Text2.Text = Mid(Text1.Text, primercaracter + 20, primercaracter)
End Sub

Pero nada. Espero haberme explicado más, espero también vuestras respuestas. Gracias de antemano.

dPix


En línea

Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.276



Ver Perfil WWW
Re: Encontrar texto
« Respuesta #1 en: 2 Septiembre 2006, 22:08 pm »

No te dare todo el codigo porke es de mala educación (;)) pero si te dare las bases apra que empieces. Te dare este texto que escribi en otro foro para buscar palabras en el texto.

Citar
Esto sirve para buskar una determinada palabra en una frase o texto y lo elimina:

Citar
Dim a As String

a = "Hendrixholapunker"

For i = 1 To Len(a)
If Mid(a, i, 4) = "hola" Then
Text1.Text = Mid(a, 1, (i - 1)) & Mid(a, (i + 4))
End If
Next

Bien, nos tenemos que fijar en lo siguiente:

Citar
If Mid(a, i, 4) = "hola" Then

Si os fijais, pongo 4 porke son las letras que tiene la palabra hola

Citar
Text1.Text = Mid(a, 1, (i - 1)) & Mid(a, (i + 4))

Y aki lo mismo..... ;) ;) ;)

Lo que hace esto es koger desde el principio hasta un caracter antes desde donde lo esta buskando y despues le agrega el resto, kitando lo que keremos.....

Ya ven, facil, y tonto a la vez.....pero weno, no tengo nada mejor que hacer y ago esto...xD xD xD

Salu2

Bien, ahora lo que tienes que hacer es buscar hasta que enkuentres <font color=#008000> y guardas el texto que le sigue, leugo, a ese texto guardado, buskas hasta  </font><nobr> y guardas el texto que hay detras de esto, y ya tienes la pagina.... ;D ;D

Salu2



En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
dPix

Desconectado Desconectado

Mensajes: 222


¬_¬ - ¬O.o


Ver Perfil
Re: Encontrar texto
« Respuesta #2 en: 3 Septiembre 2006, 00:22 am »

No no, no me des todo el código, solo necesito una "pista" de como hacer para que guarde lo que hay antes de </font><nobr> ya que con el code que postee anteriormente consigo que se quede la "página web" + lo que le sigue, pero no consigo guardar "solo la web". Gracias por contestar.

un saludo
En línea

Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.276



Ver Perfil WWW
Re: Encontrar texto
« Respuesta #3 en: 3 Septiembre 2006, 00:55 am »

sigue mi ejemplo, si lo entiendes es facil hacerlo.

Salu2

En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
soplo
Ex-Staff
*
Desconectado Desconectado

Mensajes: 3.592

Debian rool'z


Ver Perfil
Re: Encontrar texto
« Respuesta #4 en: 3 Septiembre 2006, 01:02 am »

Hola
Existe una función que busca una string contenida en otra y devuelve su posición
instr(PosInicio,StringDondeSeBusca,StringABuscar)

El tipo de comparación puede ser binario o textual y si no se especifica se utiliza el que venga en option compare

Código:
Dim S1 as string, S2 as string, PosIni as integer, PosEncontrado as integer

S1="abcdefghijklm"
S2="cde"
PosIni=1
PosEncontrado=instr(PosIni,S1,S2) ' valor 3
PosIni=2
PosEncontrado=instr(PosIni,S1,S2) ' valor 0 no encontrado

Así que solo tienes que ir leyendo línea a línea buscando "<font color=#008000>"  y cuando lo encuentres buscas "</font><nobr>" de la misma manera.

Una vez establecidas ambas posiciones solo tienes que extraer con mid la string que se encuentre entre una y otra.

Para ello averiguas cuantos caracteres hay en medio
Código:
PosUltimoCaracterUrl=PosStrFinal-1
PosPrimerCaracterUrl=PosStrInicial+len(PosStrInicial)+1
TotalCaracteresUrl=PosUltimoCaracterUrl-PosPrimerCaracterUrl
TotalCaracteresUrl=TotalCaracteresUrl+2 (contar los dos extremos)

y ahora extraer el string adecuado
Código:
StringBuscada=mid(linea$,PosPrimerCaracterUrl,TotalCaracteresUrl)

Un saludo

En línea

Callar es asentir ¡No te dejes llevar!
Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.276



Ver Perfil WWW
Re: Encontrar texto
« Respuesta #5 en: 3 Septiembre 2006, 10:52 am »

Mira, no lo suelo hacer, pero aki te lo doy:

Código:
Function buscar(cadena As String, inicio As String, final As String)
Dim a As String
Dim b As String
Dim c As String


For i = 1 To Len(cadena)
c = Mid(cadena, i, Len(inicio))
If c = inicio Then
a = Mid(cadena, i + Len(inicio), Len(cadena) - Len(inicio))
End If
Next

For r = 1 To Len(a)
c = Mid(a, r, Len(final))
If c = final Then
b = Mid(a, 1, Len(a) - Len(final))
End If
Next

buscar = b

End Function

Si no lo entiendes pidelo.

En cadena pones todo el texto, en inicio pones el texto donde empezara a excluir y en final pones dodne tiene que terminar.

Salu2



« Última modificación: 3 Septiembre 2006, 11:42 am por Hendrix. » En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: Encontrar texto
« Respuesta #6 en: 3 Septiembre 2006, 14:20 pm »

tambien puedes utilizar la funcion split... xD

En línea

dPix

Desconectado Desconectado

Mensajes: 222


¬_¬ - ¬O.o


Ver Perfil
Re: Encontrar texto
« Respuesta #7 en: 3 Septiembre 2006, 17:42 pm »

Hendrix: muchas gracias por tu aportación  ;D, soplo, lo mismo, al principio cuando me lo explicasteis no lo terminé de pillar, pero más o menos lo he ido pillando cuando me dijeron esto:
Citar
Dim Ini As Integer
Dim Fin As Integer
Dim inicial As Integer

Ini = InStr(1, Text1.Text, "<font color=#008000>") + 20
Fin = InStr(Ini + 1, Text1.Text, "</font><nobr>")
inicial = Ini
Do While inicial <= Ini
If Ini = 0 Or Fin = 0 Then Exit Sub 'Cuando vuelva al nº 1 FIN

List1.AddItem Mid(Text1.Text, Ini, Fin - Ini) ' añado al listbox
Ini = InStr(Fin + 1, Text1.Text, "<font color=#008000>") + 20
Fin = InStr(Ini + 1, Text1.Text, "</font><nobr>")
Loop

Lo retoqué yo un poco pero ahora funciona, el caso es que necesito, eliminar "<b>" y ·</b>" cuando aparezcan, lo he intentado con Replace pero me resulta complicado, de todas formas Hendrix., desde mi punto de vista no es de mala educación dar el código, ya que gracias a que me lo dieron lo entendí, muchísimas gracias  ;Dy a ver si alguien me puede ayudar con lo de "<b>" y "</b">. :huh:

Un saludo,

dPix ;D
En línea

Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: Encontrar texto
« Respuesta #8 en: 4 Septiembre 2006, 02:19 am »

¿que no entiendes de esto?

Código:
Replace(expresión, encontrar, reemplazarCon)


ejemplo...
Código:
text1.text = Replace(text1.text , "<b>", "")
En línea

Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.276



Ver Perfil WWW
Re: Encontrar texto
« Respuesta #9 en: 4 Septiembre 2006, 10:40 am »

Te lo postee aki: http://foro.elhacker.net/index.php/topic,138646.msg650845.html#msg650845

Citar
Hendrix., desde mi punto de vista no es de mala educación dar el código, ya que gracias a que me lo dieron lo entendí,

Cierto, pero se aprende mas buscandolo y kurrandotelo por ti mismo que no que te lo plasemn y ya, ademas, lo dije ironikamente.... ;) ;) ;)

Salu2

En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines