Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'oggetto String non è modificabile. Ogni volta che si usa uno dei metodi nella System.String classe , si crea un nuovo oggetto stringa in memoria, che richiede una nuova allocazione di spazio per il nuovo oggetto. In situazioni in cui è necessario eseguire modifiche ripetute a una stringa, il sovraccarico associato alla creazione di un nuovo String oggetto può essere costoso. La System.Text.StringBuilder classe può essere usata quando si desidera modificare una stringa senza creare un nuovo oggetto. Ad esempio, l'uso della StringBuilder classe può migliorare le prestazioni durante la concatenazione di molte stringhe in un ciclo.
Importazione dello spazio dei nomi System.Text
La classe StringBuilder si trova nello spazio dei nomi System.Text. Per evitare di dover specificare un nome di tipo completo nel codice, è possibile importare lo spazio dei nomi System.Text.
using System;
using System.Text;
Imports System.Text
Creazione di un'istanza di StringBuilder
È possibile creare una nuova istanza della classe inizializzando la StringBuilder variabile con uno dei metodi del costruttore di overload, come illustrato nell'esempio seguente.
StringBuilder myStringBuilder = new StringBuilder("Hello World!");
Dim myStringBuilder As New StringBuilder("Hello World!")
Impostazione della capacità e della lunghezza
StringBuilder Anche se è un oggetto dinamico che consente di espandere il numero di caratteri nella stringa che incapsula, è possibile specificare un valore per il numero massimo di caratteri che può contenere. Questo valore viene chiamato capacità dell'oggetto e non deve essere confuso con la lunghezza della stringa che contiene l'oggetto corrente StringBuilder . Ad esempio, è possibile creare una nuova istanza della StringBuilder classe con la stringa "Hello", che ha una lunghezza di 5 e si potrebbe specificare che l'oggetto ha una capacità massima di 25. Quando si modifica StringBuilder, non rialloca la memoria finché non viene raggiunta la capacità. In questo caso, il nuovo spazio viene allocato automaticamente e la capacità viene raddoppiata. È possibile specificare la capacità della classe StringBuilder utilizzando uno dei costruttori sovraccarichi. Nell'esempio seguente viene specificato che l'oggetto myStringBuilder
può essere espanso fino a un massimo di 25 spazi.
StringBuilder myStringBuilder = new StringBuilder("Hello World!", 25);
Dim myStringBuilder As New StringBuilder("Hello World!", 25)
Inoltre, è possibile utilizzare la proprietà di lettura/scrittura Capacity per impostare la lunghezza massima dell'oggetto. Nell'esempio seguente viene utilizzata la proprietà Capacity per definire la lunghezza massima dell'oggetto.
myStringBuilder.Capacity = 25;
myStringBuilder.Capacity = 25
Il EnsureCapacity metodo può essere usato per controllare la capacità dell'attuale StringBuilder. Se la capacità è maggiore del valore passato, non viene apportata alcuna modifica; Tuttavia, se la capacità è inferiore al valore passato, la capacità corrente viene modificata in modo che corrisponda al valore passato.
La Length proprietà può anche essere visualizzata o impostata. Se si imposta la proprietà Length su un valore maggiore della proprietà Capacity , la proprietà Capacity viene automaticamente modificata nello stesso valore della proprietà Length . Impostando la proprietà Length su un valore minore della lunghezza della stringa all'interno dell'oggetto StringBuilder corrente, la stringa viene abbreviata.
Modifica della stringa StringBuilder
Nella tabella seguente sono elencati i metodi che è possibile usare per modificare il contenuto di stringbuilder.
Nome del metodo | Utilizzo |
---|---|
StringBuilder.Append | Aggiunge informazioni alla fine dell'oggetto StringBuilder corrente. |
StringBuilder.AppendFormat | Sostituisce un identificatore di formato passato in una stringa con testo formattato. |
StringBuilder.Insert | Inserisce una stringa o un oggetto nell'indice specificato dell'oggetto StringBuilder corrente. |
StringBuilder.Remove | Rimuove un numero specificato di caratteri dall'oggetto StringBuilder corrente. |
StringBuilder.Replace | Sostituisce tutte le occorrenze di un carattere o di una stringa specificata nell'oggetto StringBuilder corrente con un altro carattere o stringa specificato. |
Aggiungi
Il metodo Append può essere utilizzato per aggiungere testo o una rappresentazione di stringa di un oggetto alla fine di una stringa rappresentata dall'oggetto StringBuilder corrente. Nell'esempio seguente viene inizializzato stringBuilder in "Hello World" e quindi viene aggiunto del testo alla fine dell'oggetto. Lo spazio viene allocato automaticamente in base alle esigenze.
StringBuilder myStringBuilder = new StringBuilder("Hello World!");
myStringBuilder.Append(" What a beautiful day.");
Console.WriteLine(myStringBuilder);
// The example displays the following output:
// Hello World! What a beautiful day.
Dim myStringBuilder As New StringBuilder("Hello World!")
myStringBuilder.Append(" What a beautiful day.")
Console.WriteLine(myStringBuilder)
' The example displays the following output:
' Hello World! What a beautiful day.
AggiungiFormato
Il StringBuilder.AppendFormat metodo aggiunge testo alla fine dell'oggetto StringBuilder . Supporta la funzionalità di formattazione composita chiamando l'implementazione IFormattable dell'oggetto o degli oggetti da formattare. Pertanto, accetta le stringhe di formato standard per valori numerici, di data e ora e di enumerazione, le stringhe di formato personalizzate per i valori numerici e di data e ora e le stringhe di formato definite per i tipi personalizzati. Per informazioni sulla formattazione, vedere Formattazione dei tipi. È possibile usare questo metodo per personalizzare il formato delle variabili e accodare tali valori a un oggetto StringBuilder. Nell'esempio seguente viene utilizzato il AppendFormat metodo per inserire un valore intero formattato come valore di valuta alla fine di un StringBuilder oggetto .
int MyInt = 25;
StringBuilder myStringBuilder = new StringBuilder("Your total is ");
myStringBuilder.AppendFormat("{0:C} ", MyInt);
Console.WriteLine(myStringBuilder);
// The example displays the following output:
// Your total is $25.00
Dim MyInt As Integer = 25
Dim myStringBuilder As New StringBuilder("Your total is ")
myStringBuilder.AppendFormat("{0:C} ", MyInt)
Console.WriteLine(myStringBuilder)
' The example displays the following output:
' Your total is $25.00
Inserire
Il Insert metodo aggiunge una stringa o un oggetto a una posizione specificata nell'oggetto corrente StringBuilder . Nell'esempio seguente viene utilizzato questo metodo per inserire una parola nella sesta posizione di un StringBuilder oggetto .
StringBuilder myStringBuilder = new StringBuilder("Hello World!");
myStringBuilder.Insert(6,"Beautiful ");
Console.WriteLine(myStringBuilder);
// The example displays the following output:
// Hello Beautiful World!
Dim myStringBuilder As New StringBuilder("Hello World!")
myStringBuilder.Insert(6, "Beautiful ")
Console.WriteLine(myStringBuilder)
' The example displays the following output:
' Hello Beautiful World!
Rimuovi
È possibile utilizzare il metodo Remove per rimuovere un numero specificato di caratteri dall'oggetto corrente StringBuilder , a partire da un indice in base zero specificato. Nell'esempio seguente viene utilizzato il metodo Remove per abbreviare un StringBuilder oggetto .
StringBuilder myStringBuilder = new StringBuilder("Hello World!");
myStringBuilder.Remove(5,7);
Console.WriteLine(myStringBuilder);
// The example displays the following output:
// Hello
Dim myStringBuilder As New StringBuilder("Hello World!")
myStringBuilder.Remove(5, 7)
Console.WriteLine(myStringBuilder)
' The example displays the following output:
' Hello
Sostituire
Il metodo Replace può essere utilizzato per sostituire i caratteri all'interno dell'oggetto StringBuilder con un altro carattere specificato. Nell'esempio seguente viene utilizzato il metodo Replace per cercare in un StringBuilder oggetto tutte le istanze del carattere punto esclamativo (!) e sostituirle con il carattere punto interrogativo (?).
StringBuilder myStringBuilder = new StringBuilder("Hello World!");
myStringBuilder.Replace('!', '?');
Console.WriteLine(myStringBuilder);
// The example displays the following output:
// Hello World?
Dim myStringBuilder As New StringBuilder("Hello World!")
myStringBuilder.Replace("!"c, "?"c)
Console.WriteLine(myStringBuilder)
' The example displays the following output:
' Hello World?
Conversione di un oggetto StringBuilder in una stringa
È necessario convertire l'oggetto StringBuilder in un String oggetto prima di poter passare la stringa rappresentata dall'oggetto StringBuilder a un metodo con un String parametro o visualizzarlo nell'interfaccia utente. Per eseguire questa conversione, chiamare il StringBuilder.ToString metodo . Nell'esempio seguente viene chiamato un numero di StringBuilder metodi e quindi viene chiamato il StringBuilder.ToString() metodo per visualizzare la stringa.
using System;
using System.Text;
public class Example
{
public static void Main()
{
StringBuilder sb = new StringBuilder();
bool flag = true;
string[] spellings = { "recieve", "receeve", "receive" };
sb.AppendFormat("Which of the following spellings is {0}:", flag);
sb.AppendLine();
for (int ctr = 0; ctr <= spellings.GetUpperBound(0); ctr++) {
sb.AppendFormat(" {0}. {1}", ctr, spellings[ctr]);
sb.AppendLine();
}
sb.AppendLine();
Console.WriteLine(sb.ToString());
}
}
// The example displays the following output:
// Which of the following spellings is True:
// 0. recieve
// 1. receeve
// 2. receive
Imports System.Text
Module Example
Public Sub Main()
Dim sb As New StringBuilder()
Dim flag As Boolean = True
Dim spellings() As String = {"recieve", "receeve", "receive"}
sb.AppendFormat("Which of the following spellings is {0}:", flag)
sb.AppendLine()
For ctr As Integer = 0 To spellings.GetUpperBound(0)
sb.AppendFormat(" {0}. {1}", ctr, spellings(ctr))
sb.AppendLine()
Next
sb.AppendLine()
Console.WriteLine(sb.ToString())
End Sub
End Module
' The example displays the following output:
' Which of the following spellings is True:
' 0. recieve
' 1. receeve
' 2. receive