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

StringBuilder di C#

In C#, the string type is immutable. This means that once a string is created, it cannot be changed. For example, a new string "Hello World!" will occupy memory space on the heap. Now, by changing the initial string from "Hello World!" to "Hello World! from Tutorials Teacher", a new string object will be created on the memory heap instead of modifying the original string at the same memory address. If the original string is changed multiple times by replacing, appending, deleting, or inserting a new string into it, this behavior will affect performance.

Allocazione di memoria per l'oggetto Stringa

Per risolvere questo problema, C# ha introdotto StringBuilder nel namespace System.Text. StringBuilder non crea nuovi oggetti in memoria, ma espande dinamicamente la memoria per accogliere la stringa modificata.

Allocazione di memoria per l'oggetto StringBuilder

Creazione di un oggetto StringBuilder

Puoi creare un oggetto StringBuilder utilizzando la parola chiave new e passare una stringa iniziale. Esempio: Creazione di un oggetto StringBuilder

using System.Text; // Importazione
            
StringBuilder sb = new StringBuilder(); // Stringhe aggiunte in seguito
// O
StringBuilder sb = new StringBuilder("Hello World!");

O ancora, puoi utilizzare il costruttore sovraccaricato per specificare la capacità massima dell'oggetto StringBuilder, come mostrato di seguito.

StringBuilder sb = new StringBuilder(50); // Stringhe aggiunte in seguito
// O
StringBuilder sb = new StringBuilder("Hello World!", 50);

Inoltre, C# assegna in sequenza fino a 50 spazi di memoria nella pila. Una volta raggiunta la capacità specificata, questa capacità viene automaticamente raddoppiata. Puoi anche impostare o recuperare la capacità dell'oggetto StringBuilder utilizzando le proprietà capacity o length.

Puoi utilizzare un ciclo for per ottenere o impostare il carattere specifico all'indice desiderato.

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

Recuperare una stringa da StringBuilder

StringBuilder non è una stringa. Utilizzare il metodo ToString () per recuperare una stringa dall'oggetto StringBuilder.

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

Aggiungere/aggiungere una stringa a StringBuilder

Utilizzare il metodo Append () per aggiungere una stringa alla fine dell'oggetto StringBuilder corrente. Se StringBuilder non contiene ancora alcuna stringa, aggiungerà essa stessa. Il metodo AppendLine () aggiunge un carattere di newline alla fine della stringa.

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

Aggiungere una stringa formattata a StringBuilder

Utilizzare il metodo AppendFormat() per formattare una stringa di input in un formato specificato e poi aggiungerla.

StringBuilder sbAmout = new StringBuilder("Il tuo importo totale è di ");
sbAmout.AppendFormat("{0:C} ", 25);
Console.WriteLine(sbAmout); // Output: Il tuo importo totale è di $25.00

Inserire una stringa in StringBuilder

Utilizzare il metodo Insert() per inserire una stringa all'indice specificato di un oggetto StringBuilder.

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

Eliminare una stringa in StringBuilder

Utilizzare il metodo Remove() per eliminare una stringa da un indice specificato fino a una lunghezza specificata.

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

Sostituire una stringa in StringBuilder

Utilizzare il metodo Replace() per sostituire tutte le occorrenze di una stringa specificata con una stringa di sostituzione specificata.

StringBuilder sb = new StringBuilder("Hello World!");
sb.Replace("World", "C#);
Console.WriteLine(sb); // Output: Hello C#!
Punti da ricordare:
  1. StringBuilder è mutabile.

  2. L'esecuzione di StringBuilder è più veloce quando si aggiungono più valori di stringa.

  3. Quando devi aggiungere tre o più stringhe, usa StringBuilder.

  4. Aggiungi o aggiungi alla fine una stringa all'oggetto StringBuilder utilizzando il metodo Append().

  5. Estrai la stringa dall'oggetto StringBuilder utilizzando il metodo ToString().