Clipper/FiveWin - Expresión Caractere

 
Vista:

Expresión Caractere

Publicado por Letchev (9 intervenciones) el 12/11/2003 20:41:01
Estimados amigos,

Por favor, cual sería la función equivalente en Clipper, sí es que hay,
semejante al Occurs() in FoxPro, la cual retorna el número de veces que
una expresión ocurre dentro de otra exporesión?

Por ejemplo

STORE 'abracadabra' TO gcstring
CLEAR
? OCCURS('a', gcstring) && Displays 5
? OCCURS('b', gcstring) && Displays 2
? OCCURS('c', gcstring) && Displays 1
? OCCURS('e', gcstring) && Displays 0

Gracias por cualquier ayuda,

Letchev
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Expresión Caractere

Publicado por Gustavo Alvarez Gambini (274 intervenciones) el 13/11/2003 00:34:57
En Clipper puro creo que no existe ninguna función que haga lo que quieres.
Pero si la tienes por ej. en librerías como las Funcky.
Saludos.
Gustavo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Expresión Caractere

Publicado por Cesar (153 intervenciones) el 13/11/2003 14:46:01
Hola, como dice Gustavo, no existe en clipper puro una funcion equivalente a la que indicas.
Pero es muy facil de emular.
Yo utilizaria un For... next para recorrer la cadena de caracteres con un STEP (segun largo de la cadena a comparar) y un if (bifurcador) con un contador que controle las concordancias y LISTO!

Saludos
Cesar
Argentina
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Expresión Caractere

Publicado por Gustavo Alvarez Gambini (274 intervenciones) el 14/11/2003 09:38:48
Como dice Cesar lo podrías hacer en clipper pero quizás sea un poco mas complicado de lo que dice Cesar ya que hay que ir buscando la subcadena. De todas maneras sería bastante sencillo.
Algo así. ( cuidado no lo voy a probar )

Function COccurs( cOrigen, cBusca )
Local nVeces := 0
Local nPosicion := 0
Do while cOrigen <> ""
nPosicion := At( cBusca, cOrigen ) // Busco la primer si existe
If nPosicion <> 0
nVeces ++
cOrigen := SubS( cOrigen, nPosicion + Len( cBusca ) )
Else
cOrigen := ""
EndIf
EndDo
Return( nVeces )

**** Espero que funcione y te sea útil.
Saludos.
Gustavo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar