¿Qué es un string en C#?

Resumen: en este tutorial, aprenderás sobre el tipo string o cadenas de texto de C# y las operaciones básicas que puedes hacer con este tipo de datos.
Introducción al tipo de datos string de C#
C#
usa la palabra clave string
para representar el tipo de datos de cadenas de texto. La palabra clave string
es un alias para el tipo System.String. Por lo tanto, string
y String
son equivalentes.
Declarar un string
El siguiente ejemplo declara una variable string
sin inicializarlo:
string message;
Después de declarar la variable string
, puedes asignarle una cadena de texto. Para formar una cadena de texto, coloca el texto entre comillas dobles ("..."
). Por ejemplo:
message = "Hola";
El siguiente ejemplo declara e inicializa la cadena usando la misma declaración:
string message = "Hi";
Para crear un string de longitud cero, usa String.Empty así:
string message = String.Empty;
Es equivalente a lo siguiente:
string message = "";
Obtener la longitud de un string
Un string tiene la propiedad Length
que devuelve la longitud de una cadena. Para acceder a la propiedad Length
, utiliza el operador de punto (.) así:
string message = "Hola";
Console.WriteLine(message.Length);
Resultado
4
Concatenar dos cadenas
Para concatenar dos cadenas en una, usa el operador +
. Por ejemplo:
string message = "Bienvenido" + " a Estrada Web Group";
Console.WriteLine(message);
Resultado:
Bienvenido a Estrada Web Group
Para agregar una cadena a otra, también puede usar el operador +=
. Por ejemplo:
string message = "Bienvenido";
message += " a Estrada Web Group";
Console.WriteLine(message);
Resultado:
Bienvenido a Estrada Web Group
String de C# es inmutable
Significa que cuando realizas cambios en una cadena, siempre obtendrás una nueva cadena. Por ejemplo:
string message = "C#";
message += " string";
Console.WriteLine(message);
Resultado:
C# string
En este ejemplo:
- Primero, defines la variable string message e inicialízala con "
C#
". - En segundo lugar, concatena la variable string menssage con otra cadena de texto "
string
". - Tercero, muestra la variable string menssage en la consola.
Al concatenar el valor del string menssage con " string
", C#
no cambia el mensaje de cadena original, sino que crea una nueva cadena que contiene la cadena concatenada.
Acceso a caracteres individuales
Internamente, C#
almacena un string como una colección de caracteres de solo lectura. Para acceder a un carácter individual en un string
, utilice la notación de corchetes []
con un índice:
s[index]
El primer carácter tiene un índice de 0
. El segundo carácter tiene un índice de 1
, y así sucesivamente. Por ejemplo:
string message = "Hello";
Console.WriteLine(message[0]); // H
Debido a que un string es inmutable, solo puedes leer caracteres individuales de ella.
El siguiente ejemplo da como resultado un error de compilación porque intenta cambiar el primer carácter de una cadena:
string name = "Jill";
name[0] = 'B';
Secuencias de escape
Una cadena de texto puede contener caracteres especiales como tabulaciones, saltos de línea, … usando una barra invertida (\
). Se llaman secuencias de escape. Por ejemplo:
string header = "id\tname";
Console.WriteLine(header);
Resultado:
id name
El string de header tiene el carácter \t
como carácter de tabulación. Entonces, cuando lo mostramos en la consola, la salida tiene un carácter de tabulación entre id
y name
.
Si un string
contiene comillas dobles, debes usar el carácter de barra invertida \
para escapar de ellas. Por ejemplo:
string message = "\"C# is awesome\". They said";
Console.WriteLine(message);
En este ejemplo, el string
contiene dos comillas dobles:
"C# is awesome". They said.
Por lo tanto, usamos el carácter de barra invertida (\
) para escapar de cada uno de ellos:
"\"C# is awesome\". They said."
Si un string contiene el carácter de barra invertida como un carácter literal, debe usar otro carácter de barra invertida para escapar de esta manera:
string path = "C:\\users\\";
Console.WriteLine(path);
Resultado:
C:\users\
En este ejemplo, la cadena "C:\users\" de la ruta del directorio contiene las barras invertidas. Por lo tanto, necesitamos escapar de ellos usando barras invertidas.
String textual
Si una cadena contiene barras diagonales inversas, puedes escaparlas usando barras diagonales inversas. Pero las barras invertidas dobles dificultan la lectura de la cadena.
Para solucionar esto, puedes convertir un string en una cadena textual anteponiendo el símbolo @
. La cadena textual deshabilita los caracteres de escape para que una barra invertida sea una barra invertida. Por ejemplo:
string path = @"C:\users\";
Console.WriteLine(path);
Resultado:
C:\users\
Dado que las cadenas textuales conservan los caracteres de nueva línea como parte del texto del string
, puedes utilizarlos para crear cadenas de varias líneas. Por ejemplo:
string content = @"I'm a multiline
string that span multiple
lines";
Console.WriteLine(content);
Resultado:
I'm a multiline
string that span multiple
lines
String interpolada
Supongamos que tiene una variable llamada name:
string name = "Joe";
Y deseas concatenar la variable en otra cadena de texto.
Para hacerlo, prefija la cadena de texto con el carácter $
y coloca la variable dentro de las llaves {}
:
string name = "Joe";
string greeting = $"Hello {name}!";
Console.WriteLine(greeting);
Resultado:
Hello Joe!
Una cadena de texto con el prefijo $
es una cadena interpolada.
Cuando se encuentra el prefijo $
, el compilador reemplaza la variable {name}
con su valor. Esta característica se llama interpolación de cadenas.
Resumen
C#
usa la palabra clave string para representar el tipo de datos de cadena de texto.- La palabra clave
string
es un alias para el tipo System.String. Por lo tanto, string y String son lo mismo. - Los string de
C#
son inmutables. - Utiliza la propiedad
Length
para obtener la longitud de la cadena. - Utiliza el operador
+
para concatenar dos cadenas y devolver una nueva cadena. - Utiliza el corchete con un índice para acceder a un carácter individual en un
string
. - Usa una cadena textual con el prefijo
@
para deshabilitar el carácter de escape para que las barras invertidas no tengan un significado especial. - Utiliza una cadena interpolada con el prefijo
$
para incrustar una variable en una cadena de texto.