[SRC] + [Función] Text_Between_Words [by *PsYkE1*]

Iniciado por Psyke1, 31 Mayo 2010, 21:58 PM

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

seba123neo

claro, lo unico que yo nunca la usaria para buscar 2 palabras solas como mostro cobein , que se pueden repetir 500 veces en un texto, la usaria para buscar 2 cadenas bien largas e irrepetibles en el texto, como hice en el ejemplo de la web.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Psyke1

Cita de: seba123neo en  3 Junio 2010, 02:32 AM
claro, lo unico que yo nunca la usaria para buscar 2 palabras solas como mostro cobein , que se pueden repetir 500 veces en un texto, la usaria para buscar 2 cadenas bien largas e irrepetibles en el texto, como hice en el ejemplo de la web.
Si la verdad es que yo tambien cai en eso, pero no le di mucha importancia puesto que Si se repetia la palabra cogia dos como referencia... :silbar:

Salu2! ;)

Psyke1

#22
Os aviso para que le echeis un vistazo al 1er post de nuevo, he simplificado y corregido la funcion con lo que djio Cobein, ahora funciona perfectamente, espero vuestra opinion... :-*

Salu2! ;)

EDITO:
Corregidme si me equivoco, pero creo que seguimos teniendo un error...
Imaginar que tenemos esto y queremos desde el 1er "el" hasta el que va antes de "balcon":
Citar
el hombre de negro el que estaba en el balcon
Segun lo que hemos hecho, nos daria esto:
Citar
hombre de negro
cuando en realidad queremos esto:
Citar
hombre de negro el que estaba en
¿Os dais cuenta? Mas adelante publico solucion a esto... :P
Salu2!

BlackZeroX


no tiene caso ocupar nuevamente instr() si ya lo tienes en la variable pos2 y lo de mid()

Código (Vb) [Seleccionar]


Option Explicit
Public Function Text_Between_Words(Text As String, String1 As String, String2 As String) As String
    Dim Pos1 As Integer, Pos2 As Integer, Start As Integer
    Pos1 = InStr(Text, String1)
    If Pos1 <> 0 Then Start = Pos1 + Len(String1): Pos2 = InStr(Start, Text, String2) Else Exit Function
    If Pos2 <> 0 Then Text_Between_Words = Mid$(Text, Start, Pos2 - Start) Else Exit Function
End Function



Dulce Infierno Lunar!¡.
The Dark Shadow is my passion.

Psyke1

Jejejeje, gracias, se me escapo... :silbar:
Tampoco seria necesario el segundo Exit Function... :laugh:

Salu2! ;)

cobein

Cita de: seba123neo en  3 Junio 2010, 02:32 AM
claro, lo unico que yo nunca la usaria para buscar 2 palabras solas como mostro cobein , que se pueden repetir 500 veces en un texto, la usaria para buscar 2 cadenas bien largas e irrepetibles en el texto, como hice en el ejemplo de la web.

Entiendo lo que decis pero la funcion plantea una palabra y la que le sigue y el codigo NO hace eso por eso la modificacion.
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

BlackZeroX


Cita de: *PsYkE1* en  5 Junio 2010, 22:03 PM
Jejejeje, gracias, se me escapo... :silbar:
Tampoco seria necesario el segundo Exit Function... :laugh:

Salu2! ;)

Código (vb) [Seleccionar]


Public Function Text_Between_Words(Text As String, String1 As String, String2 As String) As String
    Dim Pos1 As Integer, Pos2 As Integer, Start As Integer
    If Len(Text) > 0 Then
        Pos1 = InStr(1, Text, String1)
        If Pos1 > 0 Then
            Start = Pos1 + Len(String1): Pos2 = InStr(Start, Text, String2)
            If Pos2 > 0 Then Text_Between_Words = Mid$(Text, Start, Pos2 - Start)
        End If
    End If
End Function



Dulce Infierno Lunar!¡.
The Dark Shadow is my passion.

Psyke1

Ok, ya lo he corregido... :-*
¿Que opinais de esto que dije?
Cita de: *PsYkE1* en  5 Junio 2010, 03:47 AM
Corregidme si me equivoco, pero creo que seguimos teniendo un error...
Imaginar que tenemos esto y queremos desde el 1er "el" hasta el que va antes de "balcon":
Citar
el hombre de negro el que estaba en el balcon
Segun lo que hemos hecho, nos daria esto:
Citar
hombre de negro
cuando en realidad queremos esto:
Citar
hombre de negro el que estaba en
¿Os dais cuenta? Mas adelante publico solucion a esto... :P
Salu2! ;)