Manual de Basic Spectrum 48k. |
Capítulo 8
CadenasResumen
Dada una cadena, una subcadena de la misma está constituida por algunos caracteres consecutivos de ella tomados en secuencia. Por consiguiente, "strin" es una subcadena de "bigger string" (una cadena más grande), pero no son subcadenas "b sting" y "big reg". Hay una notación denominada "slicing" (fragmentación) para describir las subcadenas y puede aplicarse a cualquier expresión de cadena. La forma general es: expresión de cadena (comienzo TO final)
de modo que, por ejemplo:
Si omite el comienzo, entonces se supone que es 1; si omite el final, entonces se supone la longitud de la cadena. Por consiguiente:
(también puede escribir la última como "abcdef"(), ya que lo admite. Una forma algo diferente es cuando se omite TO y sólo hay un número:
Aunque el comienzo y el final suelen referirse a partes existentes de la cadena, esta regla queda derogada por otra: si el valor es mayor que el contenido de la cadena, el resultado es una cadena vacia. Así:
da el error 3 subscript wrong porque la cadena sólo contiene 6 caracteres y 7 es superior, pero:
y
El comienzo y el final no deben ser negativos u obtendrá un erros B integer out of range (entero B fuera de margen). El siguiente ejemplo es una simple ilustración de estas reglas.
Teclee NEW cuando se haya ejecutado este programa e introduzca el programa siguiente:
Para variables de cadena, podemos no solamente extraer subcadenas, sino también asignarlas. Por ejemplo, teclee:
y luego:
y
Observe cómo puesto que la subcadena a$(5 TO 8) sólo tiene 4 carácteres de longitud, se han utilizado únicamente las cuatro primeras estrellas. Esta es una característica de la asignación a subcadenas: la subcadena ha de tener exactamente la misma longitud después que antes de su asignación. Para cerciorarse de que sucede así, la cadena implicada en la asignación se corta a la derecha si es demasiado larga o se rellena con espacios si es demasiado corta. Este método se llama asignación procusteana en rememoración del célebre posadero Procustes que acostumbraba a cerciorarse de que sus huéspedes encajaban en la cama estirándoles en un potro de tormento o cortándoles los pies. Sí, ahora, prueba:
y
observará que vuelve a suceder los mismo (esta vez con espacios introducidos) porque a$() cuenta como una subcadena.
lo hará adecuadamente. Las expresiones de cadenas complicadas necesitarán encerrarse entre paréntesis antes de que puedan fragmentarse. Por ejemplo:
Ejercicio
|
Manual de Basic Spectrum 48k. |