English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

StringBuilder de C#

En C#, el tipo de cadena es inmutable. Esto significa que una vez creada, la cadena no se puede modificar. Por ejemplo, una nueva cadena "Hello World!" ocupará espacio en la pila de memoria. Ahora, al cambiar la cadena inicial "Hello World!" a "Hello World! from Tutorials Teacher", se creará un nuevo objeto de cadena en la pila de memoria, en lugar de modificar la cadena original en la misma dirección de memoria. Si se modifican varias veces la cadena original mediante sustitución, adición, eliminación o inserción de nuevas cadenas, este comportamiento afectará el rendimiento.

Asignación de memoria de objeto de cadena

Para resolver este problema, C# introduce StringBuilder en el espacio de nombres System.Text. StringBuilder no crea un nuevo objeto en la memoria, sino que expande dinámicamente la memoria para contener la cadena modificada.

Asignación de memoria de StringBuilder

Crear un objeto StringBuilder

Puede crear un objeto StringBuilder utilizando la palabra clave new y pasar una cadena inicial. A continuación se muestra un ejemplo de creación de un objeto StringBuilder.

using System.Text; //Introducción
            
StringBuilder sb = new StringBuilder(); //Pronto se añadirá una cadena
//o
StringBuilder sb = new StringBuilder("Hello World!");

O, también se puede usar el constructor sobrecargado para especificar la capacidad máxima del objeto StringBuilder, como se muestra a continuación.

StringBuilder sb = new StringBuilder(50); //Pronto se añadirá una cadena
//o
StringBuilder sb = new StringBuilder("Hello World!", 50);

Por lo tanto, C# asigna en secuencia en la pila de memoria el máximo5Una vez alcanzada la capacidad especificada, esta capacidad se duplica automáticamente. También se puede usar la propiedad capacity o length para establecer o recuperar la capacidad del objeto StringBuilder.

Puede usar un bucle for para obtener o establecer el carácter en la posición específica. No hay espacio.

StringBuilder sb = new StringBuilder("Hello World!");
for(int i = 0; i < sb.Length; i++{
 Console.Write(sb[i]); // Salida: Hello World!
}

Recuperar cadena de StringBuilder

StringBuilder no es una cadena. Utilice el método ToString() para recuperar la cadena del objeto StringBuilder.

StringBuilder sb = new StringBuilder("Hello World!");
var greet = sb.ToString(); //Devuelve " Hello World!""Hello World!"

Agregar a StringBuilder/Agregar cadena

Utilice el método Append() para agregar una cadena al final del objeto StringBuilder actual. Si el StringBuilder aún no contiene ninguna cadena, se agregará. El método AppendLine() agrega un salto de línea al final de la cadena.

StringBuilder sb = new StringBuilder();
sb.Append("Hello ");
sb.AppendLine("World!");
sb.AppendLine("Hello C#");
Console.WriteLine(sb);
Salida:
Hello World!
Hello C#

Agregar cadena formateada a StringBuilder

Utilice el método AppendFormat() para formatear una cadena de entrada según un formato específico y luego agregarla.

StringBuilder sbAmout = new StringBuilder("Su monto total es ");
sbAmout.AppendFormat("{0:C} ", 25);
Console.WriteLine(sbAmout);//Salida: Su monto total es $25.00

Insertar String en StringBuilder

Utilice el método Insert() para insertar una cadena en la posición específica de un objeto StringBuilder.

StringBuilder sb = new StringBuilder("Hello World!");
sb.Insert(5," C#"); 
Console.WriteLine(sb); //Salida: Hello C# World!

Eliminar cadena en StringBuilder

Utilice el método Remove() para eliminar una cadena desde una posición específica hasta una longitud específica.

StringBuilder sb = new StringBuilder("Hello World!",50);
sb.Remove(6, 7);
Console.WriteLine(sb); //Salida: 你好

Reemplazar cadena en StringBuilder

Utilice el método Replace() para reemplazar todas las apariciones de una cadena específica con una cadena de reemplazo específica.

StringBuilder sb = new StringBuilder("Hello World!");
sb.Replace("World", "C#");
Console.WriteLine(sb);//Salida: ¡Hola C#!
Puntos a recordar:
  1. StringBuilder es mutable.

  2. El rendimiento de StringBuilder al concatenar múltiples valores de cadena es más rápido que el de string.

  3. Utilice StringBuilder cuando necesite concatenar tres o más cadenas.

  4. Añada o adjunte una cadena al objeto StringBuilder utilizando el método Append().

  5. Recupere la cadena del objeto StringBuilder utilizando el método ToString().