Freigeben über


Verwenden der StringBuilder-Klasse

Das String-Objekt ist unveränderlich. Jedes Mal, wenn Sie eine der Methoden aus der System.String-Klasse verwenden, erstellen Sie im Arbeitsspeicher ein neues Zeichenfolgenobjekt, für das zusätzlicher Speicherplatz belegt werden muss. In Situationen, in denen Sie wiederholt Änderungen an einer Zeichenfolge vornehmen müssen, kann durch die ständige Neuerstellung des String-Objekts ein erheblicher Mehraufwand entstehen. Mithilfe der System.Text.StringBuilder-Klasse kann eine Zeichenfolge geändert werden, ohne dass ein neues Objekt erstellt werden muss. Durch die Verwendung der StringBuilder-Klasse kann z. B. die Leistung gesteigert werden, wenn zahlreiche Zeichenfolgen in einer Schleife verkettet werden.

Instanziieren eines StringBuilder-Objekts

Sie können eine neue Instanz der StringBuilder-Klasse erstellen, indem Sie die Variable mit einer der Methoden für überladene Konstruktoren initialisieren, wie im folgenden Beispiel verdeutlicht.

Dim MyStringBuilder As New StringBuilder("Hello World!")
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Hello World!");

Festlegen von Kapazität und Länge

Beim StringBuilder handelt es sich um ein dynamisches Objekt, das es Ihnen ermöglicht, die Anzahl der Zeichen in der darin gekapselten Zeichenfolge zu erhöhen. Sie können jedoch auch einen Wert für die maximale Anzahl von Zeichen festlegen, die das Objekt einschließen darf. Dieser Wert wird als die Kapazität des Objekts bezeichnet und darf nicht mit der Länge der Zeichenfolge verwechselt werden, die im aktuellen StringBuilder enthalten ist. Sie können z. B. eine neue Instanz der StringBuilder-Klasse mit der Zeichenfolge "Hello" erstellen, die eine Länge von 5 Zeichen aufweist. Danach können Sie festlegen, dass das Objekt eine maximale Kapazität von 25 Zeichen hat. Bei einer Änderung der StringBuilder Klasse wird erst dann ein neuer Größenwert zugeordnet, wenn die Kapazitätsgrenze erreicht ist. Tritt dieser Fall ein, wird der neue Speicherplatz automatisch zugeordnet und die Kapazität verdoppelt. Sie können die Kapazität der StringBuilder-Klasse festlegen, indem Sie einen der überladenen Konstruktoren verwenden. Im folgenden Beispiel wird festgelegt, dass das MyStringBuilder-Objekt auf maximal 25 Stellen erweitert werden kann.

Dim MyStringBuilder As New StringBuilder("Hello World!", 25) 
StringBuilder MyStringBuilder = new StringBuilder("Hello World!", 25);  
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Hello World!", 25);

Darüber hinaus können Sie die Capacity-Eigenschaft mit Schreib-/Lesezugriff verwenden, um die maximale Objektlänge festzulegen. Im folgenden Beispiel wird die Capacity-Eigenschaft verwendet, um die maximale Objektlänge zu definieren.

MyStringBuilder.Capacity = 25
MyStringBuilder.Capacity = 25;
MyStringBuilder->Capacity = 25;

Mithilfe der EnsureCapacity-Methode kann die Kapazität des aktuellen StringBuilder überprüft werden. Wenn die Kapazität größer als der übergebene Wert ist, wird keine Änderung vorgenommen; ist die Kapazität hingegen geringer als der übergebene Wert, wird die aktuelle Kapazität in Anpassung an den übergebenen Wert verringert.

Außerdem kann die Length-Eigenschaft angezeigt oder festgelegt werden. Wenn Sie für die Length-Eigenschaft einen höheren Wert als die Capacity-Eigenschaft festlegen, wird für die Capacity-Eigenschaft automatisch der gleiche Wert wie für die Length-Eigenschaft festgelegt. Wenn für die Length-Eigenschaft ein Wert festgelegt wird, der geringer als die Länge der Zeichenfolge im aktuellen StringBuilder ist, wird die Zeichenfolge gekürzt.

Ändern der StringBuilder-Zeichenfolge

In der folgenden Tabelle sind die Methoden aufgeführt, mit denen Sie den Inhalt eines StringBuilder ändern können.

Methodenname

Verwendung

StringBuilder.Append

Fügt Informationen an das Ende des aktuellen StringBuilder an.

StringBuilder.AppendFormat

Ersetzt einen in einer Zeichenfolge übergebenen Formatbezeichner durch formatierten Text.

StringBuilder.Insert

Fügt eine Zeichenfolge oder ein Objekt in den angegebenen Index des aktuellen StringBuilder ein.

StringBuilder.Remove

Entfernt eine festgelegte Anzahl von Zeichen aus dem aktuellen StringBuilder.

StringBuilder.Replace

Ersetzt ein bestimmtes Zeichen an einem festgelegten Index.

Append

Mithilfe der Append-Methode kann Text oder eine Zeichenfolgendarstellung eines Objekts am Ende einer Zeichenfolge eingefügt werden, die durch den aktuellen StringBuilder dargestellt wird. Im folgenden Beispiel wird ein StringBuilder mit "Hello World" initialisiert und anschließend Text am Ende des Objekts angefügt. Bei Bedarf wird automatisch Speicherplatz zugeordnet.

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.
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.
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Hello World!");
MyStringBuilder->Append(" What a beautiful day.");
Console::WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello World! What a beautiful day.

AppendFormat

Die StringBuilder.AppendFormat-Methode fügt Text am Ende des StringBuilder-Objekts hinzu. Sie unterstützt die Funktion für die kombinierte Formatierung (weitere Informationen finden Sie unter Kombinierte Formatierung) durch Aufrufen der IFormattable-Implementierung der Objekte, die formatiert werden sollen. Die Standardformatzeichenfolgen für numerische Werte, Datums- und Uhrzeitwerte und Enumerationswerte werden daher ebenso akzeptiert wie die benutzerdefinierten Formatzeichenfolgen, die für numerische Werte sowie Datums- und Uhrzeitwerte festgelegt wurden, und die Formatzeichenfolgen, die für benutzerdefinierte Typen definierten wurden. (Weitere Informationen zur Formatierung finden Sie unter Formatierung von Typen.) Sie können diese Methode verwenden, um das Format von Variablen anzupassen und diese Werte an StringBuilder anzufügen. Im folgenden Beispiel wird die AppendFormat-Methode verwendet, um einen als Währungsbetrag formatierten, ganzzahligen Wert am Ende eines StringBuilder-Objekts einzufügen.

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  
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      
int MyInt = 25;
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Your total is ");
MyStringBuilder->AppendFormat("{0:C} ", MyInt);
Console::WriteLine(MyStringBuilder);
// The example displays the following output:
//       Your total is $25.00

Insert

Mit der Insert-Methode wird einer angegebenen Position im aktuellen StringBuilder-Objekt eine Zeichenfolge oder ein Objekt hinzugefügt. Im folgenden Beispiel wird mit dieser Methode ein Wort an der sechsten Position eines StringBuilder-Objekts eingefügt.

Dim MyStringBuilder As New StringBuilder("Hello World!")
MyStringBuilder.Insert(6, "Beautiful ")
Console.WriteLine(MyStringBuilder)
' The example displays the following output:
'      Hello Beautiful World!
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Insert(6,"Beautiful ");
Console.WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello Beautiful World!
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Hello World!");
MyStringBuilder->Insert(6,"Beautiful ");
Console::WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello Beautiful World!

Entfernen

Mithilfe der Remove-Methode können Sie beginnend bei einem festgelegten nullbasierten Index eine bestimmte Anzahl von Zeichen aus dem aktuellen StringBuilder-Objekt entfernen. Im folgenden Beispiel wird ein StringBuilder-Objekt mithilfe einer Remove-Methode gekürzt.

Dim MyStringBuilder As New StringBuilder("Hello World!")
MyStringBuilder.Remove(5, 7)
Console.WriteLine(MyStringBuilder)
' The example displays the following output:
'       Hello
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Remove(5,7);
Console.WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Hello World!");
MyStringBuilder->Remove(5,7);
Console::WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello

Ersetzen

Mithilfe der Replace-Methode können Zeichen innerhalb des StringBuilder-Objekts durch ein anderes festgelegtes Zeichen ersetzt werden. Im folgenden Beispiel wird die Replace-Methode verwendet, um in einem StringBuilder-Objekt alle Vorkommnisse des Ausrufezeichens (!) zu suchen und durch das Fragezeichen (?) zu ersetzen.

Dim MyStringBuilder As New StringBuilder("Hello World!")
MyStringBuilder.Replace("!"c, "?"c)
Console.WriteLine(MyStringBuilder)
' The example displays the following output:
'       Hello World?
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Replace('!', '?');
Console.WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello World?
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Hello World!");
MyStringBuilder->Replace('!', '?');
Console::WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello World?

Konvertieren eines StringBuilder-Objekts in eine Zeichenfolge

Sie müssen das StringBuilder-Objekt in ein String-Objekt konvertieren, bevor Sie die vom StringBuilder-Objekt dargestellte Zeichenfolge an eine Methode übergeben können, die einen String-Parameter aufweist, oder bevor Sie sie auf der Benutzeroberfläche anzeigen. Diese Konvertierung führen Sie aus, indem Sie die StringBuilder.ToString-Methode aufrufen. Im folgenden Beispiel werden einige StringBuilder-Methode aufgerufen. Dann wird die StringBuilder.ToString()-Methode aufgerufen, um die Zeichenfolge anzuzeigen.

Siehe auch

Referenz

System.Text.StringBuilder

Konzepte

Formatierung von Typen

Weitere Ressourcen

Grundlegende Zeichenfolgenoperationen

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

Informationen über die Konvertierung von StringBuilder in String wurden hinzugefügt.

Kundenfeedback.