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 cas où vous devez effectuer des modifications répétées d'une chaîne, la surcharge associée à la création d'un nouvel objet String peut être élevée. Vous pouvez utiliser la classe System.Text.StringBuilder pour modifier une chaîne sans créer de 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.

Instanciation d'un objet StringBuilder

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!");
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Hello World!");

Définition de la capacité et de la longueur

Bien que le StringBuilder soit un objet dynamique qui vous permet d'augmenter le nombre de caractères de la chaîne encapsulée, vous pouvez spécifier une valeur pour le nombre maximal de caractères qu'il peut contenir. Cette valeur correspond à la capacité de l'objet et ne doit pas être confondue avec la longueur de la chaîne contenue dans l'objet StringBuilder actif. 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 StringBuilder, il 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);  
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Hello World!", 25);

Vous pouvez également utiliser la propriété en 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;
MyStringBuilder->Capacity = 25;

Vous pouvez utiliser la méthode EnsureCapacity pour vérifier la capacité du StringBuilder actuel. 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.

Vous pouvez également afficher la propriété Length ou y affecter une valeur. 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

Utilisation

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 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)
' The example displays the following output:
'       Hello World! What a beautiful day.
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Append(" What a beautiful day.");
Console.WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello World! What a beautiful day.
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Hello World!");
MyStringBuilder->Append(" What a beautiful day.");
Console::WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello World! What a beautiful day.

AppendFormat

La méthode StringBuilder.AppendFormat ajoute le texte à la fin de l'objet StringBuilder. Elle prend en charge la fonctionnalité de mise en forme composite (pour plus d'informations, consultez Mise en forme composite) en appelant l'implémentation d'IFormattable de l'objet ou des objets à mettre en forme. Par conséquent, elle accepte les chaînes de format standard pour les valeurs numériques, de date et d'heure, et d'énumération, les chaînes de format personnalisées pour les valeurs numériques et de date et d'heure, ainsi que les chaînes de format définies pour les types personnalisés. (Pour plus d'informations sur la mise en forme, consultez Mise en forme des types.) Vous pouvez utiliser cette méthode pour personnaliser le format des variables et ajouter ces valeurs à un 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 d'un objet StringBuilder.

Dim MyInt As Integer = 25
Dim MyStringBuilder As New StringBuilder("Your total is ")
MyStringBuilder.AppendFormat("{0:C} ", MyInt)
Console.WriteLine(MyStringBuilder)
' The example displays the following output:
'     Your total is $25.00  
int MyInt = 25; 
StringBuilder MyStringBuilder = new StringBuilder("Your total is ");
MyStringBuilder.AppendFormat("{0:C} ", MyInt);
Console.WriteLine(MyStringBuilder);
// The example displays the following output:
//       Your total is $25.00      
int MyInt = 25;
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Your total is ");
MyStringBuilder->AppendFormat("{0:C} ", MyInt);
Console::WriteLine(MyStringBuilder);
// The example displays the following output:
//       Your total is $25.00

Insert

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

Dim MyStringBuilder As New StringBuilder("Hello World!")
MyStringBuilder.Insert(6, "Beautiful ")
Console.WriteLine(MyStringBuilder)
' The example displays the following output:
'      Hello Beautiful World!
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Insert(6,"Beautiful ");
Console.WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello Beautiful World!
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Hello World!");
MyStringBuilder->Insert(6,"Beautiful ");
Console::WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello Beautiful World!

Remove

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

Dim MyStringBuilder As New StringBuilder("Hello World!")
MyStringBuilder.Remove(5, 7)
Console.WriteLine(MyStringBuilder)
' The example displays the following output:
'       Hello
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Remove(5,7);
Console.WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Hello World!");
MyStringBuilder->Remove(5,7);
Console::WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello

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)
' The example displays the following output:
'       Hello World?
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Replace('!', '?');
Console.WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello World?
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Hello World!");
MyStringBuilder->Replace('!', '?');
Console::WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello World?

Conversion d'un objet StringBuilder en une chaîne

Vous devez convertir l'objet StringBuilder en un objet String avant de pouvoir passer la chaîne représentée par l'objet StringBuilder à une méthode qui contient un paramètre String ou l'afficher dans l'interface utilisateur. Pour effectuer cette conversion, appelez la méthode StringBuilder.ToString. L'exemple suivant appelle un certain nombre de méthodes StringBuilder, puis la méthode StringBuilder.ToString() pour afficher la chaîne.

Voir aussi

Référence

System.Text.StringBuilder

Concepts

Mise en forme des types

Autres ressources

Opérations de chaînes de base

Historique des modifications

Date

Historique

Motif

Des informations supplémentaires sur la conversion StringBuilder-to-String ont été ajoutées.

Commentaires client.