Cadena de caracteres

En programación, una cadena de caracteres, palabras, ristra de caracteres o frase (string, en inglés) es una secuencia ordenada (de longitud arbitraria, aunque finita) de elementos que pertenecen a un cierto lenguaje formal o alfabeto análogas a una fórmula o a una oración. En general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Si no se ponen restricciones al alfabeto, una cadena podrá estar formada por cualquier combinación finita de los caracteres disponibles (las letras de la 'a' a la 'z' y de la 'A' a la 'Z', los números del '0' al '9', el espacio en blanco ' ', símbolos diversos '!', '@', '%', etcétera).

En este mismo ámbito, se utilizan habitualmente como un tipo de dato predefinido, para palabras, frases o cualquier otra sucesión de caracteres. En este caso, se almacenan en un vector de datos, o matriz de datos de una sola fila (array, en inglés). Las cadenas se pueden almacenar físicamente:

Generalmente los caracteres se guardan uno a continuación de otro para fines de eficiencia en el acceso.

Un caso especial de cadena es la que contiene cero caracteres. A esta cadena se la llama cadena vacía; en teoría de autómatas, es común representarla por medio de la letra griega \epsilon.

Operación con cadena de caracteres

Al considerar las cadenas como un tipo de datos, hay que definir cuáles son las operaciones que es posible hacer con ellas. En principio, podrían ser muchas y llegar a ser muy sofisticadas. Las siguientes son algunas de ellas:

Representación

Una cadena suele ser representada entre comillas dobles superiores ("palabra"), mientras que un carácter de esa cadena (un char en inglés) suele ser representado entre comillas simples ('p'). Por ejemplo, en C:

charAt c = 'a';
char str[5] = "hola";

Generalmente para acceder a un carácter en una posición determinada se suele usar la forma variable[posición] como cuando se accede a un vector.

Para poder mostrar una comilla (") dentro de la cadena y no tener problemas con las comillas que la delimitan, se usan secuencias de escape. Esto se aplica a otros caracteres reservados o no imprimibles como el retorno de carro. No obstante, las expresiones para producir estas secuencias de escape dependen del lenguaje de programación que se esté usando. Una forma común, en muchos lenguajes, de escapar un carácter es anteponiéndole un «\» (sin comillas), p. e.: «\"» (sin comillas).

Cadenas dinámicas y estáticas

Las cadenas pueden ser de naturaleza dinámica (pueden alterar su longitud durante el tiempo de ejecución) o de naturaleza estática (su longitud es fija a lo largo del tiempo de ejecución). En este segundo caso, el programador debe prever que al recorrer la cadena los índices no se vayan de los límites previstos (C no permite que las cadenas crezcan automáticamente de forma explícita, mientras que C# sí).

El final de la cadena se delimita de diferente manera en uno u otro caso:

Ejemplos de operaciones comunes

Asignación

Asignar 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 Python
$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úmero 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
len(cadena)               # en Python

Comparación

Comparar dos cadenas en orden lexicográfico.

int strcmp(const char[], const char[]); # en C Devuelve <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 varias veces una cadena.

$puntos ="." x 5 # pone 5 puntos en Perl.
puntos := Generator generateJoin: '.' repeat: 5.   # Genera una cadena de 5 puntos en Smalltalk.
puntos = "." * 5              # Genera una cadena de 5 puntos en Python.

Enlaces externos

This article is issued from Wikipedia - version of the Tuesday, February 09, 2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.