Share via


Utilisation de la classe StringBuilder

L'objet String est immuable. Chaque fois que vous utilisez l'une des méthodes de la classe System.String, vous créez un nouvel objet chaîne en mémoire, ce qui requiert une nouvelle allocation d'espace pour ce nouvel objet. Dans les situations où vous devez effectuer des modifications répétées d'une chaîne, le coût associé à la création d'un nouvel objet String peut être élevé. La classe System.Text.StringBuilder peut être utilisée lorsque vous voulez modifier une chaîne sans créer un nouvel objet. Par exemple, l'utilisation de la classe StringBuilder peut optimiser les performances lorsqu'il s'agit de concaténer de nombreuses chaînes dans une boucle.

Vous pouvez créer une nouvelle instance de la classe StringBuilder en initialisant votre variable avec l'une des méthodes des constructeurs surchargés, comme l'illustre l'exemple suivant.

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

Définition de la capacité et de la longueur

Bien que StringBuilder soit un objet dynamique qui vous permet d'augmenter le nombre de caractères contenu dans la chaîne encapsulée, vous pouvez spécifier une valeur pour le nombre maximal de caractères qu'il peut contenir. Cette valeur est appelée la capacité de l'objet et ne doit pas être confondue avec la longueur de la chaîne contenue dans l'objet StringBuilder en cours. Par exemple, vous pouvez créer une nouvelle instance de la classe StringBuilder avec la chaîne « Hello », d'une longueur de 5, et spécifier que l'objet a une capacité maximale de 25. Lorsque vous modifiez la classe StringBuilder, elle ne se réalloue pas une nouvelle taille tant que sa capacité n'est pas atteinte. Lorsque cela se produit, le nouvel espace est alloué automatiquement et la capacité est doublée. Vous pouvez spécifier la capacité de la classe StringBuilder à l'aide de l'un des constructeurs surchargés. L'exemple suivant spécifie que l'objet MyStringBuilder peut être augmenté jusqu'à un maximum de 25 espaces.

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

En outre, vous pouvez utiliser la propriété lecture/écriture Capacity pour définir la longueur maximale de votre objet. L'exemple suivant utilise la propriété Capacity pour définir la longueur maximale de l'objet.

MyStringBuilder.Capacity = 25
MyStringBuilder.Capacity = 25;

La méthode EnsureCapacity peut être utilisée pour vérifier la capacité de StringBuilder en cours. Si la capacité est supérieure à la valeur passée, aucun changement n'est effectué ; cependant, si la capacité est inférieure à la valeur passée, la capacité en cours est modifiée afin de correspondre à la valeur passée.

La propriété Length peut aussi être affichée ou définie. Si vous attribuez à la propriété Length une valeur supérieure à celle de la propriété Capacity, la propriété Capacity adopte automatiquement la même valeur que la propriété Length. L'attribution à la propriété Length d'une valeur inférieure à la longueur de la chaîne contenue dans StringBuilder en cours a pour effet de raccourcir la chaîne.

Modification de la chaîne de l'objet StringBuilder

Le tableau suivant énumère les méthodes que vous pouvez utiliser pour modifier le contenu de StringBuilder.

Nom de la méthode Use

StringBuilder.Append

Ajoute des informations à la fin de StringBuilder en cours.

StringBuilder.AppendFormat

Remplace un spécificateur de format passé dans une chaîne par du texte mis en forme.

StringBuilder.Insert

Insère une chaîne ou un objet dans l'index spécifié de StringBuilder en cours.

StringBuilder.Remove

Supprime un nombre spécifié de caractères de StringBuilder en cours.

StringBuilder.Replace

Remplace un caractère spécifié au niveau d'un index spécifié.

Append

La méthode Append peut être utilisée pour ajouter du texte ou une chaîne représentant un objet à la fin d'une chaîne représentée par StringBuilder en cours. L'exemple suivant initialise StringBuilder pour « Hello World » et ajoute ensuite du texte à la fin de l'objet StringBuilder. L'espace est alloué au fur et à mesure des nécessités.

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

Cet exemple affiche Hello World! What a beautiful day. dans la console.

AppendFormat

La méthode AppendFormat ajoute du texte à la fin de StringBuilder, mais implémente aussi l'interface IFormattable et accepte par conséquent les chaînes de format standard décrites dans la section mise en forme. Vous pouvez utiliser cette méthode pour personnaliser le format des variables et ajouter ces valeurs à StringBuilder. L'exemple suivant utilise la méthode AppendFormat pour placer une valeur entière mise en forme comme une valeur monétaire à la fin de StringBuilder.

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

Cet exemple affiche Your total is $25.00 dans la console.

Insert

La méthode Insert ajoute une chaîne ou un objet à une position spécifiée dans StringBuilder en cours. L'exemple suivant utilise cette méthode pour insérer un mot à la sixième position dans StringBuilder.

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

Cet exemple affiche Hello Beautiful World! dans la console.

Remove

Vous pouvez utiliser la méthode Remove pour supprimer un nombre spécifié de caractères de StringBuilder en cours, en commençant d'un index de base zéro spécifié. L'exemple suivant utilise la méthode Remove pour raccourcir StringBuilder.

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

Cet exemple affiche Hello dans la console.

Replace

La méthode Replace peut être utilisée pour remplacer des caractères dans l'objet StringBuilder par un autre caractère spécifié. L'exemple suivant utilise la méthode Replace pour rechercher dans un objet StringBuilder toutes les instances du caractère point d'exclamation (!) et les remplacer par le caractère point d'interrogation (?).

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

Cet exemple affiche Hello World? dans la console.

Voir aussi

Référence

System.Text.StringBuilder

Autres ressources

Opérations de chaînes de base