Encontrar texto

Iniciado por dPix, 2 Septiembre 2006, 21:53 PM

0 Miembros y 1 Visitante están viendo este tema.

dPix

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í:


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

Hendrix

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.

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

CitarDim 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:

CitarIf Mid(a, i, 4) = "hola" Then

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

CitarText1.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

"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

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

Hendrix

sigue mi ejemplo, si lo entiendes es facil hacerlo.

Salu2

"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

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

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
PosUltimoCaracterUrl=PosStrFinal-1
PosPrimerCaracterUrl=PosStrInicial+len(PosStrInicial)+1
TotalCaracteresUrl=PosUltimoCaracterUrl-PosPrimerCaracterUrl
TotalCaracteresUrl=TotalCaracteresUrl+2 (contar los dos extremos)


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

Un saludo

Callar es asentir ¡No te dejes llevar!

Hendrix

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

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



"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

tambien puedes utilizar la funcion split... xD

 

dPix

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:
CitarDim 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

Hans el Topo

¿que no entiendes de esto?

Replace(expresión, encontrar, reemplazarCon)


ejemplo...
text1.text = Replace(text1.text , "<b>", "")
 

Hendrix

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

CitarHendrix., 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

"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