Algunas cositas del tipo string en C#

Una de las cosas que menos me ha gustado siempre cuando di mis primeros pasitos con C o con Java fue lo difícil o, mejor dicho, poco intuitivo que era trabajar con variables de tipo string.

C# incorpora una serie de herramientas muy útiles que nos hacen la vida más fácil, sobretodo en el mundo web, donde el trabajo con strings es el pan nuestro de cada día. A lo largo de este artículo comentaré algunas de esas herramientas, las más comunes, que no deben servir de otra cosa más que de introducción a todas ellas.

Para sentar bases, lo primero que hay que recalcar es que existe el tipo string tal cual, sólo tenemos que declarar la variable y trabajar con ella:

string mivariable = "Hola mundo cruel :)";

Sobre las variables de tipo string se puede trabajar forma muy sencilla. Por ejemplo, se puede aplicar el operador "==" para comparar dos strings, de modo que siguiendo el ejemplo

mivariable == "Hola mundo cruel :)";

daría true. Aplicar el operador "==" es lo mismo que hacer

mivariable.Equals("Hola mundo cruel :)");

o

string.Equals("mivariable", "Hola mundo cruel :)");

Estos dos últimos modos eran, a mi parecer, menos intuitivos que el primero.

Del mismo modo, es muy sencillo realizar operaciones de concatenación entre strings, pues no hay más que aplicar el operador "+". Por ejemplo, creamos tres variables string y a la tercera le hacemos la concatenación de la primera y la segunda.

string mivariable1 = string.Empty, mivariable2 = string.Empty, mivariable3 = string.Empty;
mivariable1 = "Blog de ASP.NET 2.0";
mivariable2 = "con C# en castellano";
mivariable3 = mivariable1 + mivariable2;


con lo que mivariable3 vale "Blog de ASP.NET 2.0 con C# en castellano. Como se observa, se han inicializado las tres variables string con una cadena vacía "string.Empty", algo que yo hago siempre por costumbre y que aconsejo a todos.
La aplicación del operador "+" para concatenar variables es lo mismo que hacer un

mivariable 3 = string.Concat(mivariable1, mivariable2)

Otra de las cosas útiles del tipo string, es que se puede acceder fácilmente a cada uno de los caracteres que lo forman, del mismo modo que se trata a un array. Por ejemplo, si se quiere averiguar cuantos caracteres 's' hay en la variable string, haríamos algo como:

int contador = 0;
for (int i = 0; i < mivariable3.Lenght; i++)
{
    if (mivariable3[i] == 's')
    {  
       contador++;
    }
}


Ojo, porque C# es siempre case sensitive, y no es lo mismo 's' que 'S'. Si queremos que encuentre ambos caracteres tenemos muchas opciones, pero una de las más sencillas podría ser aplicar el método ToLower() al string antes de comparar, que no hace otra cosa que poner en minúsculas todos los caracteres del string (ToUpper() los pone en mayúsculas), de modo que quedaría algo como

int contador = 0;
for (int i = 0; i < mivariable3.Lenght; i++)
{
    if (mivariable3.ToLower[i] == 's')
    {  
       contador++;
    }
}


En ocasiones puede preferirse recoger un vector de char con todos los componentes del string, con lo que no hay más que hacer

char[] vectorchar = mivariable3..ToCharArray();

aunque también es muy útil no pasarlo a un vector puro y duro, sino a convertirlo en un CharEnumerator, del que hablaré en un futuro.

CharEnumerator mischars = mivariable3.GetEnumerator();

Para finalizar con esta pequeña introducción al tratamiento de strings en C#, comentaré una de los métodos del tipo string más chulos, a la par que terriblemente sencillo. Se trata de

string.IsNullOrEmpty(mivariable3);

que nos hace más sencilla la típica sentencia en que nos aseguramos que un string está inicializado (no es null) o no está vacío.

Pues lo dicho, esto no ha sido una pequeña introducción a una enorme cantidad de herramientas que proporciona C# para con los strings. En artículos futuros comentaremos algunas de esas herramientas más avanzadas, así como el tipo StringBuilder, con el que mejoraremos muchísimo tanto la facilidad de trabajo como la eficiencia con el tratamiento y concatenación de muchos strings y/o strings muy largos.