Como contar y ordenar los elementos de una cadena.

Hola Experto,
En Visual Foxpro, como puedo hacer para contar los elementos de una cadena considerando que cada elemento de esa cadena es de 10 caracteres y ademas como puedo ordenarla. Ejemplo:
cadena="01/01/2008 02/01/2008 25/01/2008 11/01/2008"
Gracias por su valiosa ayuda.
Saludos,
Severino

1 Respuesta

Respuesta
1
Para dar respuesta a tu pregunta podríamos hacer la siguiente rutina:
CADENA="01/01/2008 02/01/2008 25/01/2008 11/01/2008"
CADENA2=""
nLONGITUD=LEN(CADENA)
nELEMENTOS=0
CREATE CURSOR XYZ (DATO C(10))
DO WHILE nLONGITUD>=10
nELEMENTOS=nELEMENTOS+1
cSUBCADENA=SUBSTR(CADENA,1,10)
INSERT INTO XYZ VALUES (cSUBCADENA)
CADENA=SUBSTR(CADENA,12,nLONGITUD-11)
nLONGITUD=LEN(CADENA)
ENDDO
SE LE DATO FROM XYZ ORDER BY DATO INTO CURSOR ZZZ
SELE ZZZ
SCAN
IF RECNO()>1
CADENA2=CADENA2+' '
ENDIF
CADENA2=CADENA2+DATO
Endscan
? Cadena2
? NELEMENTOS
Clos tables all
Te explico, en la linea 2 creamos una cadena vacía en donde se almacenara el resultado de la cadena ordenada, en la linea 3 hallamos la longitud de la cadena, en la linea 4 creamos una variable que almacenara el # de elementos de la cadena, en la linea 5 creamos una tabla temporal para almacenar los elementos de la cadena, en la linea 6 creamos un bucle que controle los elementos que vamos a extraer, en la linea 7 incrementamos la variable que nos almacena el # de elementos, en la 8 extraemos una subcadena que contendrá el elemento actual, en la 9 insertamos ese elemento en el cursor, en la 10 quitamos el elemento que extraimos en la 8, en la 11 actualizamos la nueva longitud de la cadena, en la 13 hacemos una pequeña sentencia SQL para ordenar los elementos en otro cursor, y el ciclo SCAN que sigue a continuación adiciona los elementos ordenados a CADENA2, para finalizar tienes ordenados los elementos de la CADENA en CADENA2 y tienes en # de elementos en nELEMENTOS.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas