Las cadenas de caracteres (también llamadas cadenas o strings) son un tipo particular de vectores, que como su nombre lo dice son vectores de char, con la particularidad que tienen una marca en el fin del (el caracter '\0'), además el lenguaje nos permite escribirlas como texto dentro de comillas dobles si son simples no. Veamos unos ejemplos de su declaración:
char cadena_hola[]="Hola";
char otro_hola[]={'H','o','l','a','\0'}; // Igual al anterior
char vector[]={'H','o','l','a'}; /* Un vector de 4 elementos,
con los elementos 'H','o','l' y 'a' */
char espacio_cadena[1024]="Una cadena en C";
char cadena_vacia[]="";
Las utilizamos por ejemplo, cuando necesitamos mandarle
mensajes al usuario. Sin embargo, las cadenas tienen mucha más funcionalidad
que eso. Si necesitamos guardar cualquier información de tipo alfanumérica las podemos utilizar.
También son utilizadas para guardar nombres, direcciones, etcétera.
Para poder utilizar cadenas necesitamos hacer uso de la clase String, que nos da todo lo necesario para poder
trabajar con ellas. En su interior la cadena se guarda como una colección y
cada carácter es un elemento. En este capítulo aprenderemos a utilizarlas y
conoceremos los métodos más importantes.
Como declarar la cadena
Declarar una cadena es muy
sencillo. De hecho, ya lo hemos llevado a cabo varias veces. Cuando necesitamos
declararla, creamos una instancia de la clase String y le asignamos el valor que contendrá. Este valor deberá
estar colocado entre comillas. Podemos declarar la variable y asignarle una
cadena vacía.
En este caso la variable miCadena
contendrá la frase “Hola a
todos” y la variable dato contendría
una cadena vacía.
Siempre representaremos las
cadenas entre comillas. Podemos imaginarlas como se muestra en la Figura 1. Esto hace fácil poder visualizarlas y
entender las operaciones que podemos realizar sobre ellas.
El método ToString()
Un método común para muchas clases que existen en C# y .NET
es ToString(). Éste es usado
para convertir el tipo de dato o su representación a una cadena y es muy útil
cuando necesitamos desplegar esa información para que el usuario la pueda leer.
Para darles formato a valores numéricos
Al igual que con la información
de la fecha y hora, es posible darles formato a los valores numéricos que
deseemos mostrar. Para éstos también tendremos una serie de especificadores que
podemos utilizar.
Cuando especificamos un formato podemos tener diferentes
secciones. Por ejemplo, podemos utilizar un formato en particular para cuando
los números sean positivos y otro formato para cuando los números sean
negativos. Estas secciones se separan por medio del carácter ;.
Si usamos dos secciones, el formato colocado en la
primera será utilizado para los números positivos y el cero. El formato que
coloquemos en la segunda sección será el que se utilizará para los números
negativos. En el caso que definamos tres secciones, el formato colocado en la
primera sección será utilizado para los números positivos.
Como concatenar cadenas
Otra de las manipulaciones que
podemos hacer es la concatenación,
que en C# a diferencia de otros lenguajes es muy natural e intuitiva. Esto se
debe a que podemos utilizar una función especializada para esto o aprovechar la
sobrecarga del operador + para
la clase String. Si deseamos
llevar a cabo la concatenación por medio del operador +
Uso de StringBuilder
StringBuilder
es una clase que provee .NET y podemos utilizar con C#. Nos permite
construir cadenas de forma eficiente y a su vez podemos utilizarla en lugar de
las concatenaciones si fuera necesario. Aquí sólo veremos los métodos más
importantes. Invitamos a los lectores a investigar el resto de los métodos con
la ayuda de MSDN. Su constructor tiene varias versiones. Podemos utilizar el
constructor de default que no
necesita de ningún parámetro. Hay una versión en la que podemos pasar como
parámetro una cadena con la que podemos inicializar el objeto StringBuilder.
La clase tiene varias propiedades que podemos usar, como la
propiedad Capacity, que nos indica
la capacidad actual, que puede o no ser igual a la cantidad de caracteres que
tenemos guardados en su interior, aunque generalmente será mayor.
Comparación
de cadenas
En algunas de nuestras aplicaciones es posible que lleguemos
a necesitar llevar a cabo una comparación entre algunas cadenas. Esto nos puede
servir para determinar si una cadena en especial ha sido introducida por el
alfabéticamente una serie de cadenas que nosotros seleccionemos, o también,
usuario. Pero la comparación también nos puede ayudar a organizar
mayor, igual o menor que otra.
simplemente para resolver algún problema que requiera saber si una cadena es
La comparación de cadenas es una herramienta muy importante
para solucionar diversos problemas y lograr resultados que de otra forma serían
muy complejos.
La clase String nos
da el método Compare(). Este método es
estático, por lo que podemos hacer uso de éste sin necesidad de declarar un
objeto de tipo String. El método
necesitará dos parámetros, que son las cadenas a comparar. Los llamaremos en
nuestro ejemplo Cadena1 y Cadena2. El método regresará luego del análisis,
un valor entero y el valor de este entero será el que se encargue de indicarnos
la relación que existe entre las cadenas que acabamos de comparar.
Si el valor regresado es igual
a 0, esto significa que Cadena1 y Cadena2 son
iguales. En el caso de que el valor sea menor que 0,
es decir, un número negativo, Cadena1 es
menor que Cadena2. Si se recibe un
número mayor que 0 significa que Cadena1 es mayor que Cadena2.
Para
encontrar una subcadena
La cadena puede contener una frase con muchas palabras y
para algunas aplicaciones necesitamos saber si determinada palabra se encuentra
en esa cadena. Es decir que buscaremos una subcadena
adentro de otra cadena. Esta subcadena es una cadena que queremos saber si
se encuentra en la cadena principal.
Esto puede servirnos en búsquedas o cuando necesitamos
llevar a cabo determinada lógica si se encuentra una palabra o frase en
particular. El método que usaremos se llama Contains() y debe ser invocado por la
cadena a la que se le realizará la búsqueda. Esto es importante y no debemos
olvidarlo ya que la invocación de Contains()
en la cadena incorrecta nos puede llevar a
errores de lógica
No hay comentarios:
Publicar un comentario