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

C# StringBuilder

In C# sind String-Typen unveränderlich. Dies bedeutet, dass ein String nach seiner Erstellung nicht geändert werden kann. Zum Beispiel nimmt ein neuer String "Hallo Welt!" Speicherplatz im Heap ein. Wenn Sie den Initialen String von "Hallo Welt!" in "Hallo Welt! von Tutorials Teacher" ändern, wird im Heap ein neuer String-Objekt erstellt,而不是 im gleichen Speicherort den ursprünglichen String ändern. Wenn Sie den ursprünglichen String durch Ersetzen, Anhängen, Löschen oder mehrfaches Einfügen von neuen Zeichenketten ändern, wird dieses Verhalten die Leistung beeinflussen.

Speicherzuweisung von String-Objekten

Um dieses Problem zu lösen, wurde C# StringBuilder im Namespace System.Text eingeführt. StringBuilder erstellt nicht in der Speicherpartition neue Objekte, sondern erweitert dynamisch den Speicher, um den geänderten String zu speichern.

Speicherzuweisung von StringBuilder-Objekten

Erstellen Sie ein StringBuilder-Objekt

Sie können ein StringBuilder-Objekt erstellen, indem Sie das new-Schlüsselwort verwenden und eine初始字符串 übergeben. Der folgende Beispiel zeigt die Erstellung eines StringBuilder-Objekts.

using System.Text; //Einführung
            
StringBuilder sb = new StringBuilder(); //Später wird eine Zeichenkette anhängen
//oder
StringBuilder sb = new StringBuilder("Hello World!");

Oder Sie können auch die überladene Konstruktorfunktion verwenden, um die maximale Kapazität eines StringBuilder-Objekts zu spezifizieren, wie folgt.

StringBuilder sb = new StringBuilder(50); //Später wird eine Zeichenkette anhängen
//oder
StringBuilder sb = new StringBuilder("Hello World!", 50);

Überhaupt, C#分配iert in der Reihenfolge am meisten50 Leerzeichen. Sobald die angegebene Kapazität erreicht ist, wird diese automatisch verdoppelt. Sie können auch die Eigenschaften capacity oder length verwenden, um die Kapazität oder die Länge eines StringBuilder-Objekts zu setzen oder abzurufen.

Sie können einen for-Zyklus verwenden, um Zeichen an einer bestimmten Indexposition abzurufen oder zu setzen.

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

String von StringBuilder abrufen

StringBuilder ist kein String. Verwenden Sie die Methode ToString(), um einen String aus einem StringBuilder-Objekt abzurufen.

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

Fügen Sie zu StringBuilder hinzu/Zeichenfolge anhängen

Verwenden Sie die Append()-Methode, um eine Zeichenfolge an das Ende eines aktuellen StringBuilder-Objekts anzuhängen. Fügt es hinzu, wenn der StringBuilder noch keine Zeichenfolge enthält. Die AppendLine()-Methode fügt ein Zeilenumbruchzeichen am Ende der Zeichenfolge an.

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

Fügen Sie formatierte Zeichenfolgen zu StringBuilder hinzu

Verwenden Sie die AppendFormat()-Methode, um eine Eingabezeichenfolge in das angegebene Format zu formatieren und dann hinzuzufügen.

StringBuilder sbAmout = new StringBuilder("Ihr Gesamtbetrag beträgt ");
sbAmout.AppendFormat("{0:C} ", 25);
Console.WriteLine(sbAmout);//Ausgabe: Ihr Gesamtbetrag beträgt $25.00

Fügen Sie String in StringBuilder ein

Verwenden Sie die Insert()-Methode, um eine Zeichenfolge an der angegebenen Stelle eines StringBuilder-Objekts einzufügen.

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

Zeichenfolge löschen in StringBuilder

Verwenden Sie die Remove()-Methode, um vom angegebenen Index bis zur angegebenen Länge Zeichenfolgen zu löschen.

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

Zeichenfolge ersetzen in StringBuilder

Verwenden Sie die Replace()-Methode, um alle vorkommenden Zeichenfolgen durch die angegebene Ersetzung zu ersetzen.

StringBuilder sb = new StringBuilder("Hello World!");
sb.Replace("World", "C#");
Console.WriteLine(sb);//Ausgabe: Hello C#!
Zu beachtende Punkte:
  1. StringBuilder ist veränderlich.

  2. Beim Anhängen mehrerer Zeichenketten ist die Geschwindigkeit von StringBuilder schneller als die von string.

  3. Verwenden Sie StringBuilder, wenn Sie drei oder mehr Zeichenketten anhängen müssen.

  4. Verwenden Sie die Methode Append(), um eine Zeichenkette zu einem StringBuilder-Objekt hinzuzufügen oder anzuhängen.

  5. Verwenden Sie die Methode ToString(), um eine Zeichenkette aus einem StringBuilder-Objekt abzurufen.