English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dans C#, le type de chaîne est immutable. Cela signifie que la chaîne ne peut pas être modifiée une fois créée. Par exemple, une nouvelle chaîne "Hello World!" occupe de l'espace mémoire sur la pile. Maintenant, en changeant la chaîne initiale "Hello World!" en "Hello World! from Tutorials Teacher", une nouvelle chaîne d'objets est créée sur la pile mémoire, sans modifier l'adresse mémoire originale de la chaîne. Si vous changez plusieurs fois la chaîne originale par remplacement, ajout, suppression ou insertion de nouvelles chaînes, ce comportement affectera les performances.
Allocation de mémoire d'un objet chaîne de caractères
Pour résoudre ce problème, C# introduit StringBuilder dans l'espace de noms System.Text. StringBuilder ne crée pas de nouveau objet en mémoire, mais étend dynamiquement la mémoire pour容纳修改后的字符串.
Allocation de mémoire d'un objet StringBuilder
Vous pouvez créer un objet StringBuilder en utilisant la clé new et en passant une chaîne de caractères initiale. Les exemples suivants montrent la création d'un objet StringBuilder.
using System.Text; //Introduction StringBuilder sb = new StringBuilder(); //Nous ajouterons la chaîne de caractères plus tard //ou StringBuilder sb = new StringBuilder("Hello World!");
Ou, vous pouvez également utiliser le constructeur surchargé pour spécifier la capacité maximale de l'objet StringBuilder, comme suit.
StringBuilder sb = new StringBuilder(50); //Nous ajouterons la chaîne de caractères plus tard //ou StringBuilder sb = new StringBuilder("Hello World!", 50);
En ce qui concerne, C# alloue en séquence dans la pile mémoire au maximum50 espace. Une fois que la capacité spécifiée est atteinte, cette capacité est automatiquement doublée. Vous pouvez également utiliser les propriétés capacity ou length pour définir ou récupérer la capacité de l'objet StringBuilder.
Vous pouvez utiliser une boucle for pour obtenir ou définir le caractère à l'index spécifié.
StringBuilder sb = new StringBuilder("Hello World!"); for(int i = 0; i < sb.Length; i++{ Console.Write(sb[i]); // Sortie : Hello World! }
StringBuilder n'est pas une chaîne de caractères. Utilisez la méthode ToString() pour extraire une chaîne de caractères à partir d'un objet StringBuilder.
StringBuilder sb = new StringBuilder("Hello World!"); var greet = sb.ToString(); //Retourne " Hello World!""Hello World!"
Utilisez la méthode Append() pour ajouter une chaîne à la fin de l'objet StringBuilder actuel. Si le StringBuilder ne contient pas encore de chaîne, il l'ajoute. La méthode AppendLine() ajoute un saut de ligne à la fin de la chaîne.
StringBuilder sb = new StringBuilder(); sb.Append("Hello "); sb.AppendLine("World!"); sb.AppendLine("Hello C#"); Console.WriteLine(sb);
Hello World! Hello C#
Utilisez la méthode AppendFormat() pour formater une chaîne d'entrée selon un format spécifié, puis l'ajouter.
StringBuilder sbAmout = new StringBuilder("Votre montant total est "); sbAmout.AppendFormat("{0:C} ", 25); Console.WriteLine(sbAmout);//Sortie : Votre montant total est $25.00
Utilisez la méthode Insert() pour insérer une chaîne à l'index spécifié de l'objet StringBuilder.
StringBuilder sb = new StringBuilder("Hello World!"); sb.Insert(5," C#"); Console.WriteLine(sb); //Sortie : Hello C# World!
Utilisez la méthode Remove() pour supprimer une chaîne de caractères à partir de l'index spécifié jusqu'à la longueur spécifiée.
StringBuilder sb = new StringBuilder("Hello World!",50); sb.Remove(6, 7); Console.WriteLine(sb); //Sortie : 你好
Utilisez la méthode Replace() pour remplacer toutes les occurrences d'une chaîne spécifiée par une chaîne de remplacement spécifiée.
StringBuilder sb = new StringBuilder("Hello World!"); sb.Replace("World", "C#"); Console.WriteLine(sb);//Sortie : Hello C#!
StringBuilder est modifiable.
L'exécution de l'ajout de plusieurs valeurs de chaînes de caractères via StringBuilder est plus rapide que pour string.
Utilisez StringBuilder lorsque vous devez ajouter trois ou quatre chaînes de caractères ou plus.
Ajoutez ou appendez une chaîne de caractères à l'objet StringBuilder en utilisant la méthode Append().
Récupérez la chaîne de caractères à partir de l'objet StringBuilder en utilisant la méthode ToString().