jueves, 7 de junio de 2012

Manejo de cadenas


El manejo de las cadenas es fundamental en nuestros programas.
Ya sea para la búsqueda,la presentación,operaciones,etc.

Gambas nos da muchas posibilidades para trabajar con ellas.
Tenemos funciones que el propio lenguaje nos facilita.

Algunas funciones que podemos encontrar:

  • Saber la longitud de una cadena.
  • Presentar un texto desde el comienzo,de izquierda a derecha, derecha a izquierda.
  • Eliminar los espacios,ya sea por la izquierda o la derecha,todos los espacios.
  • Para dividir una cadena en un array de cadena.
  • Para cambiar una palabra por otra.
  • Para cambiar de mayúsculas a minúsculas o viceversa.
  • Para buscar una palabra y que nos diga en que lugar se encuentra. O que existe.
  • Para añadir espacios.

Hay muchas más.
Gambas nos da muchas posibilidades con las funciones propias que incluye.


Longitud de una cadena. Función LEN

Tiene mucho uso. Acompañado de un bucle FOR – NEXT
encontraremos muchas posibilidades para nuestro programa.

Averiguaremos la longitud con la función LEN(variable de cadena)


---código---
DIM cadena AS STRING

cadena=”candelabro”

PRINT LEN(cadena)

---código---

Presentar un texto. Funciones LEFT$,RIGHT$,MID$

Una manera de darnos cuenta de que un comando o función trabaja con cadenas
es que en la propia instrucción suele incluir el carácter “$”

Función LEFT$.

Esta funcione nos mostrara los caracteres de una cadena comenzando por
su izquierda.

---código---
DIM cadena AS STRING

cadena=”candelabro”

PRINT LEFT$(cadena,3)

---código---

Nos mostrara desde la izquierda, 3 caracteres que contienen la variable cadena

Con la aplicación de los bucles ganamos mucho trabajando con estas funciones.

Función RIGHT$

Es a la inversa de la anterior.

---código---
DIM cadena AS STRING

cadena=”candelabro”

PRINT RIGHT$(cadena,3)

---código---

Nos mostrara desde la derecha, 3 caracteres que contienen la variable cadena

Y la que creo que es la más potente.

Función MID$

Es una función capaz de comenzar desde un lugar de la cadena en concreto
y decirle cuantos caracteres queremos que nos muestre.


---código---
DIM cadena AS STRING

cadena=”candelabro”

PRINT MID$(cadena,3,1)

---código---

Con esto logramos decirle que queremos que nos muestre desde el comienzo de la cadena
por la izquierda, se situé en el carácter que ocupa el “lugar” 3 y nos muestre una cantidad
de caracteres. En este caso 1.

Ahora imaginar lo que podríamos hacer con bucles.

Ejemplo con LEFT$

---código---

DIM cadena AS STRING
DIM x as INTEGER

cadena=”escalera”

FOR x=1 TO LEN(cadena)
PRINT LEFT$(cadena,x)
NEXT

---código---


Ejemplo con RIGHT$

---código---
DIM cadena AS STRING
DIM x as INTEGER

cadena=”escalera”

FOR x=1 TO LEN(cadena)
PRINT RIGHTS(cadena,x)
NEXT
---código---

Probar a hacer el bucle FOR a que vaya de mayor a menor usando
estas dos funciones. ;-)

Y ahora MID$.

---código---
DIM cadena AS STRING
DIM x as INTEGER

cadena=”escalera”

FOR x=1 TO LEN(cadena)
PRINT MID$(cadena,x,1)
NEXT
---código---

Ahora viene lo peculiar. Como veis hemos mostrado una letra de una en una.
Y si quisiéramos mostrar una a una con una pausa como si escribiéramos
con una maquina de escribir. :-)

Tendremos que usar la instrucción WAIT para crear una pausa de x's milisegundos.

WAIT 0.1 'Añade 100 milisegundos de retraso
WAIT 0.5 'Añade 500 milisegundos de retraso.

Bien. En el caso de una instrucción PRINT , muestra algo por la consola.
Podemos mostrarla como si fuera una lista o detrás de otro con la ayuda
de “;”

PRINT “José ”;
PRINT “Luis”
También podemos hacer:

PRINT “José ”;”Luis”


Naturalmente queda mas presentable en un componente TextArea

Vamos al ejemplo. ;-)

---código---
DIM cadena AS STRING
DIM x as INTEGER

cadena=”Esto es un mensaje letra por letra.”

FOR x=1 TO LEN(cadena)
PRINT MID$(cadena,x,1);
WAIT 0.2 '
NEXT

---código---
Probar a cambiar el tiempo en wait. :-)

Continuara....

Os añado una aplicación para que veais ejemplos.



Ejemplo:


Mas información en:


No hay comentarios:

Publicar un comentario