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
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
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
sigue mi ejemplo, si lo entiendes es facil hacerlo.
Salu2
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
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
tambien puedes utilizar la funcion split... xD
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
¿que no entiendes de esto?
Replace(expresión, encontrar, reemplazarCon)
ejemplo...
text1.text = Replace(text1.text , "<b>", "")
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
Lo que pasa es que antes no entendía esas funciones que me explicaron, yo lo he hecho funcionar tambén a vuestra manera, perfecto, muchas gracias. ;D