C-SHARP - 4.9 Stringbuilder (Démo)
Démonstration de StringBuilder sur Visual Studio. On commence par instancier un objet et importer le namespace nécessaire :
using System.Text;
var builder = new StringBuilder();
Append, AppendLine et construire une en-tête
La méthode Append est surchargée 26 fois pour accepter tous types (string, char, int, double, char[]…). Une de ces surcharges accepte un caractère et un nombre de répétitions, parfait pour dessiner une ligne d'étoiles :
builder.Append('*', 12); // 12 etoiles
builder.AppendLine();
builder.Append("Bienvenue");
builder.AppendLine();
builder.Append('*', 12);
Console.WriteLine(builder);
En quelques lignes, on a construit une belle en-tête formatée.
Replace, Remove, Insert
Les méthodes Replace, Remove et Insert permettent de transformer le contenu. Petit algorithme interactif : on demande à l'utilisateur s'il veut remplacer les étoiles par des tirets, puis on supprime les 5 premiers caractères et on insère des « + » :
Console.WriteLine("Voulez-vous changer les etoiles en tirets (oui/non) ?");
string choix = Console.ReadLine();
if (choix == "oui")
{
builder.Replace('*', '-');
}
builder.Remove(0, 5); // supprime 5 caracteres a partir de 0
builder.Insert(0, new string('+', 5)); // insere 5 "+" au debut
Console.WriteLine(builder);
Pour Insert, attention : builder.Insert(0, '+') n'insère qu'un seul caractère. Pour répéter, il faut passer new string('+', 5).
Accès indexé et chaînage de méthodes
On ne peut pas faire de recherche (IndexOf absent), mais on peut accéder à un caractère par index comme dans un tableau :
Console.WriteLine("Premier char : " + builder[0]);
Chaque méthode de StringBuilder retourne le builder lui-même (pas un void). Cela permet le chaînage (method chaining), pour un code beaucoup plus propre :
builder.Append('*', 12)
.AppendLine()
.Append("Bienvenue")
.AppendLine()
.Append('*', 12);
Conclusion : pour toute manipulation massive de chaînes, StringBuilder est nettement plus rapide et plus économe en mémoire que d'enchaîner des opérations sur string. Seul bémol : pas de recherche intégrée. Pour les opérations ponctuelles, la classe string reste appropriée.
En résumé
Cette leçon présente une démonstration pratique de StringBuilder en C# sur Visual Studio. Elle couvre l'instantiation d'un objet StringBuilder, l'import du namespace System.Text, et l'utilisation des principales méthodes : Append pour ajouter du contenu (caractères et chaînes), Replace pour substituer des éléments selon la saisie utilisateur, et Remove pour supprimer des éléments à partir d'un index donné.
Points clés
- StringBuilder est une classe du namespace System.Text utilisée pour la manipulation efficace de chaînes de caractères en C#
- La méthode Append() dispose de 26 surcharges différentes et accepte des paramètres de types variés (string, char, double, tableau de chars, etc.)
- La méthode Replace() remplace toutes les occurrences d'un caractère ou d'une chaîne par un autre, utile pour transformer le contenu selon les entrées utilisateur
- La méthode Remove() supprime un nombre spécifié d'éléments à partir d'un index donné dans le StringBuilder
- StringBuilder permet de construire facilement des structures formatées comme des en-têtes ou des motifs répétitifs sans manipulations complexes de chaînes
Questions fréquentes
Pourquoi utiliser StringBuilder plutôt que de concaténer des strings directement ?
StringBuilder est plus performant pour les manipulations de chaînes répétées. Elle construit le contenu en mémoire et l'optimise, contrairement à la concaténation directe qui crée une nouvelle chaîne à chaque opération.
Combien de surcharges possède la méthode Append() dans StringBuilder ?
La méthode Append() possède 26 surcharges différentes dans la classe StringBuilder, permettant d'ajouter des paramètres de types variés comme string, char, double, int, tableau de chars, etc.
Comment utiliser Replace() pour modifier le contenu d'un StringBuilder selon une condition utilisateur ?
Utilisez une condition if pour tester la saisie utilisateur, puis appelez la méthode Replace() avec deux paramètres : l'élément à remplacer et son remplacement. Par exemple, remplacer les étoiles par des tirets si l'utilisateur répond 'oui'.