Partager via


Utilisation de la classe StringBuilder

Mise à jour : novembre 2007

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é. 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!");

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

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;

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

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 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.

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

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)
' 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!

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

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?

Voir aussi

Référence

System.Text.StringBuilder

Autres ressources

Opérations de chaînes de base