Cadenas dinámicas y estáticas
Existen dos tipos de cadenas:
Cadenas dinámicas: Las cadenas pueden ser de
naturaleza dinámica (pueden alterar su longitud durante el tiempo de
ejecución).
Mediante un carácter de fin de cadena
("\0" en C) para las cadenas de tipo dinámico.
Sintaxis
charmi_cadena [5] = {‘M’,’u’,‘n’,’d’,’o’,’\0’};
Cadenas estáticas: De naturaleza estática (su
longitud es fija a lo largo del tiempo de ejecución).
Mediante una propiedad de la cadena que
delimite su longitud (Count en C#) para las de tipo estático.
Usos de las cadenas
§ Usados
para describir las características de las personas y cosas.
- Copia de una cadena
- Cálculo de la longitud,
- Comparación,
- Concatenación,
- Extracción de subcadenas,
- Búsqueda de información dentro
de las cadenas,
- Conversiones.
Operaciones con cadenas
Asignación: asignarle una cadena a otra
char *strcpy(char [], const char[]); # en C
cadena1=cadena2; # en C++
cadena1 := cadena2 # en Smalltalk
Concatenación: unir dos cadenas de caracteres.
$pareja = "Joshua"." y "."Marina" # en Perl y PHP;
pareja = "Luisa" & " y " & "Carmen" # en Visual Basic;
pareja = "Luisa" + " y " + "Carmen"; # en C++ y Java con la clase String.
pareja := 'Luisa' , ' y ' , 'Carmen'. # en Smalltalk
strcat(cadena1,cadena2); strcat(cadena1, cadena3); # en C (Debe haber suficiente espacio en la primera)
Nº de caracteres de una cadena
int strlen(const char[]); # en C Devuelve el nº de caracteres sin contar el '\0'
cadena.length(); # en C++
cadena size. # en Smalltalk
Comparación: Compara dos cadenas en orden lexicográfico
int strcmp(const char[], const char[]); # en C Devuelvee <0 si la 1ª es menor, >0 si es mayor y 0 si son iguales
cadena1==cadena2; cadena1>cadena2; etc. # en C++ Devuelve un valor de verdad
cadena1 = cadena2 # en Smalltalk Devuelve true o false.
Multiplicar una cadena: repetir una cadena un número de veces
$puntos ="." x 5 # pone 5 puntos en Perl
puntos := Generator generateJoin: '.' repeat: 5. # Genera una cadena de 5
puntos en Smalltalk
Acceder a las letras que forman una cadena
Podemos leer (o modificar) una de
las letras de una cadena de igual forma que leemos los elementos de cualquier
array: si la cadena se llama "texto", el primer elemento será texto [0],
el segundo será texto [1] y así sucesivamente.
Eso sí, las cadenas en C# no se
pueden modificar letra a letra: no podemos hacer texto [0]=’a’. Para eso habrá
que usar una construcción auxiliar, que veremos más adelante.
Longitud de la cadena.
Podemos saber cuántas letras
forman una cadena con "cadena.Length". Esto permite que podamos
recorrer la cadena letra por letra, usando construcciones como "for".
Ejercicio propuesto: Un programa
te pida tu nombre y lo muestre en pantalla separando cada letra de la siguiente
con un espacio. Por ejemplo, si tu nombre es "Juan", debería aparecer
en pantalla "J u a n".
Extraer una subcadena
Podemos extraer parte del
contenido de una cadena con "Substring", que recibe dos parámetros:
la posición a partir de la que queremos empezar y la cantidad de caracteres que
queremos obtener. El resultado será otra cadena:
saludo = frase.Substring(0,4);
Podemos omitir el segundo número,
y entonces se extraerá desde la posición indicada hasta el final de la cadena.
Buscar en una cadena
Para ver si una cadena contiene
un cierto texto, podemos usar IndexOf ("posición de"), que nos dice
en qué posición se encuentra (o devuelve el valor -1 si no aparece):
if
(nombre.IndexOf("Juan") >= 0) Console.Write("Bienvenido,
Juan");
Podemos añadir un segundo
parámetro opcional, que es la posición a partir de la que queremos buscar:
if
(nombre.IndexOf("Juan", 5) >= 0) ...
La búsqueda termina al final de
la cadena, salvo que indiquemos que termine antes con un tercer parámetro
opcional:
if
(nombre.IndexOf("Juan", 5, 15) >= 0) ...
De forma similar, LastIndexOf
("última posición de") indica la última aparición (es decir, busca de
derecha a izquierda).
Sintaxis
public static void Main()
{
tipoFicha[] fichas = new tipoFicha[1000];
}
Referencias: