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 zugeordnet 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 Aufwand 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.

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!");

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 eingeschlossenen 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. So können Sie beispielsweise 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);  

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

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)
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Append(" What a beautiful day.");
Console.WriteLine(MyStringBuilder);

In diesem Beispiel wird Hello World! What a beautiful day. auf der Konsole angezeigt.

AppendFormat

Mithilfe der AppendFormat-Methode wird am Ende von StringBuilder Text eingefügt und auch die IFormattable-Schnittstelle implementiert. Daher werden die Standardformatzeichenfolgen akzeptiert, die unter Formatierung von Typen beschrieben sind. 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 einzufügen.

Dim MyInt As Integer = 25
Dim MyStringBuilder As New StringBuilder("Your total is ")
MyStringBuilder.AppendFormat("{0:C} ", MyInt)
Console.WriteLine(MyStringBuilder)
int MyInt = 25; 
StringBuilder MyStringBuilder = new StringBuilder("Your total is ");
MyStringBuilder.AppendFormat("{0:C} ", MyInt);
Console.WriteLine(MyStringBuilder);

In diesem Beispiel wird Your total is $25.00 auf der Konsole angezeigt.

Insert

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

Dim MyStringBuilder As New StringBuilder("Hello World!")
MyStringBuilder.Insert(6, "Beautiful ")
Console.WriteLine(MyStringBuilder)
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Insert(6,"Beautiful ");
Console.WriteLine(MyStringBuilder);

In diesem Beispiel wird Hello Beautiful World! auf der Konsole angezeigt.

Remove

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

Dim MyStringBuilder As New StringBuilder("Hello World!")
MyStringBuilder.Remove(5, 7)
Console.WriteLine(MyStringBuilder)
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Remove(5,7);
Console.WriteLine(MyStringBuilder);

In diesem Beispiel wird Hello auf der Konsole angezeigt.

Replace

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)
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Replace('!', '?');
Console.WriteLine(MyStringBuilder);

In diesem Beispiel wird Hello World? auf der Konsole angezeigt.

Siehe auch

Referenz

System.Text.StringBuilder

Weitere Ressourcen

Grundlegende Zeichenfolgenoperationen