GOOD_FOX
unread,Sep 16, 2010, 7:22:24 PM9/16/10Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to Mundo Visual FoxPro
Que Tal Mario
revisa este Ejemplo, podría servirte, hace tiempo me surgio algo
parecido y realice esto en la version 6.0, la verdad no investigue si
en la version 6.0 existía una funcion parecida, pero lo que si se que
en la version 9.0 ya existe, no recuerdo cual es jejej pero revisate
esto....
Saludos... !!
*------------------------------------ Empieza código
----------------------------------------------------------------*
use clientes In 0 Exclusive
Sele Clientes
?SubExtract('ESTE ES UN*EJEMPLO DE CADENA*CON SUBCADENAS','*',2,'')
&&--> Resultado: EJEMPLO DE CADENA
?SubExtract('ESTE ES UN*EJEMPLO DE CADENA*CON SUBCADENAS','*',3,'')
&&--> Resultado: CON SUBCADENAS
?SubExtract('ESTE ES UN*EJEMPLO DE CADENA*CON SUBCADENAS','*',4,'')
&&--> Resultado: (nada)
?SubExtract('ESTE ES UN*EJEMPLO DE CADENA*CON SUBCADENAS','*',0,'')
&&--> Resultado: ESTE ES UN EJEMPLO DE CADENA CON SUBCADENAS
?SubExtract('ESTE ES UN*EJEMPLO DE CADENA*CON SUBCADENAS','*',
0,Clientes.Nombre) &&--> Resultado: ESTE ES UN EJEMPLO DE CADENA CON
SUBCADENAS
*----------------------------------------- SUBEXTRACT
--------------------------------------
*COMENTARIOS: función que Regresa una subcadena contenida en una
cadena separada por símbolos
*jcahp Good_Fox
*PARAMETROS:
* mcCadena (Caracter), cadena con símbolos donde se busca la
subcadena
* mcSímbolo (Caracter), símbolos para buscar la subcadena, ejemplo '
',*,+,/... etc.
* mnVeces (Numérico), el número de la subcadena que se suiere
extraer, si el número sobre
* pasa al número de subcadenas contenidas en la cadena, de
vuelve vacio
* Si mnVeces=0 devuelve la cadena sin simbolos
*REGRESA:
* la SubCadena buscada si tiene exito, sino devuelve un caracter de
vacio.
*EJEMPLO:
* SubExtract('ESTE ES UN*EJEMPLO DE CADENA*CON SUBCADENAS','*',2) --
> Resultado: EJEMPLO DE CADENA
* SubExtract('ESTE ES UN*EJEMPLO DE CADENA*CON SUBCADENAS','*',3) --
> Resultado: CON SUBCADENAS
* SubExtract('ESTE ES UN*EJEMPLO DE CADENA*CON SUBCADENAS','*',4) --
> Resultado: (nada)
* SubExtract('ESTE ES UN*EJEMPLO DE CADENA*CON SUBCADENAS','*',0) --
> Resultado: ESTE ES UN EJEMPLO DE CADENA CON SUBCADENAS
*----------------------------------------- SUBEXTRACT
--------------------------------------
Function SubExtract
Para mcCadena,mcSimbolo,mnVeces,mcCampo
lcCadena = ''
lnLetIni=1
lnPosSim=0
If mnVeces!=0 Then
*Se busca una subcadena
For i=1 To mnVeces
lnPosSim = At(mcSimbolo,mcCadena,i)
If lnPosSim!=0 Then
*Sigue siendo diferente de cero por lo que encontro otro símbolo
lcCadena = Substr(mcCadena,lnLetIni,lnPosSim-lnLetIni)
lnLetIni = lnPosSim+1
Else
If lnLetIni<=Len(mcCadena) Then
lcCadena = Substr(mcCadena,lnLetIni,Len(mcCadena))
lnLetIni = Len(mcCadena)+1
Else
lcCadena = ' '
Exit
EndIf
EndIf
EndFor
Else
*Se muestra toda la cadena sin símbolos
For i=1 To Len(mcCadena)
If SubStr(mcCadena,i,i)!=mcSimbolo Then
lcCadena = lcCadena+SubStr(mcCadena,i,1)
Else
*lcCadena = lcCadena+' '
lcCadena = lcCadena+IIF(Empty(mcCampo),' ',' '+Allt(mcCampo)+' ')
EndIf
EndFor
EndIf
Return lcCadena