Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’objet String est immuable. Chaque fois que vous utilisez l’une des méthodes de la System.String classe, vous créez un objet de chaîne en mémoire, ce qui nécessite une nouvelle allocation d’espace pour ce nouvel objet. Dans les situations où vous devez effectuer des modifications répétées dans une chaîne, la surcharge associée à la création d’un String objet peut être coûteuse. La System.Text.StringBuilder classe peut être utilisée lorsque vous souhaitez modifier une chaîne sans créer d’objet. Par exemple, l’utilisation de la classe peut améliorer les StringBuilder performances lors de la concaténation de nombreuses chaînes dans une boucle.
Importation de l’espace de noms System.Text
La StringBuilder classe se trouve dans l’espace System.Text de noms. Pour éviter d’avoir à fournir un nom de type complet dans votre code, vous pouvez importer l’espace System.Text de noms :
using System;
using System.Text;
Imports System.Text
Instanciation d’un objet StringBuilder
Vous pouvez créer une instance de la StringBuilder classe en initialisant votre variable avec l’une des méthodes de constructeur surchargées, comme illustré dans l’exemple suivant.
StringBuilder myStringBuilder = new StringBuilder("Hello World!");
Dim myStringBuilder As New StringBuilder("Hello World!")
Définition de la capacité et de la longueur
StringBuilder Bien qu’il s’agit d’un objet dynamique qui vous permet de développer le nombre de caractères dans la chaîne qu’il encapsule, vous pouvez spécifier une valeur pour le nombre maximal de caractères qu’il peut contenir. Cette valeur est appelée capacité de l’objet et ne doit pas être confondue avec la longueur de la chaîne que le courant StringBuilder contient. Par exemple, vous pouvez créer une nouvelle instance de la StringBuilder classe avec la chaîne « Hello », qui a une longueur de 5, et vous pouvez spécifier que l’objet a une capacité maximale de 25. Lorsque vous modifiez le StringBuilder, il ne réaffecte pas la taille pour elle-même tant que la 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 StringBuilder classe à l’aide de l’un des constructeurs surchargés. L’exemple suivant spécifie que l’objet myStringBuilder peut être étendu à un maximum de 25 espaces.
StringBuilder myStringBuilder = new StringBuilder("Hello World!", 25);
Dim myStringBuilder As New StringBuilder("Hello World!", 25)
En outre, vous pouvez 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
La EnsureCapacity méthode peut être utilisée pour vérifier la capacité du StringBuilder actuel. Si la capacité est supérieure à la valeur passée, aucune modification n’est apportée ; toutefois, si la capacité est inférieure à la valeur passée, la capacité actuelle est modifiée pour correspondre à la valeur passée.
La Length propriété peut également être consultée ou définie. Si vous définissez la propriété Length sur une valeur supérieure à la propriété Capacity , la propriété Capacity est automatiquement remplacée par la même valeur que la propriété Length . La définition de la propriété Length sur une valeur inférieure à la longueur de la chaîne dans le StringBuilder actuel raccourcit la chaîne.
Modification de la chaîne StringBuilder
Le tableau suivant répertorie les méthodes que vous pouvez utiliser pour modifier le contenu d’un StringBuilder.
| Nom de la méthode | Utiliser |
|---|---|
| StringBuilder.Append | Ajoute des informations à la fin du StringBuilder actuel. |
| 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é du StringBuilder actuel. |
| StringBuilder.Remove | Supprime un nombre spécifié de caractères du StringBuilder actuel. |
| StringBuilder.Replace | Remplace toutes les occurrences d’un caractère ou d’une chaîne spécifié dans stringBuilder actuel par un autre caractère ou chaîne spécifié. |
Ajouter
La méthode Append peut être utilisée pour ajouter du texte ou une représentation sous forme de chaîne d’un objet à la fin d’une chaîne représentée par le StringBuilder actuel. L’exemple suivant initialise un StringBuilder en « Hello World », puis ajoute du texte à la fin de l’objet. L’espace est alloué automatiquement en fonction des besoins.
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.
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.
AppendFormat
La StringBuilder.AppendFormat méthode ajoute du texte à la fin de l’objet StringBuilder . Il prend en charge la fonctionnalité de mise en forme composite en appelant l’implémentation IFormattable de l’objet ou des objets à mettre en forme. Par conséquent, il 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 Types de mise en forme.) Vous pouvez utiliser cette méthode pour personnaliser le format des variables et ajouter ces valeurs à un StringBuilder. L’exemple suivant utilise la AppendFormat méthode pour placer une valeur entière mise en forme comme valeur monétaire à la fin d’un StringBuilder objet.
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
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
Insérer
La Insert méthode ajoute une chaîne ou un objet à une position spécifiée dans l’objet actif StringBuilder . L’exemple suivant utilise cette méthode pour insérer un mot à la sixième position d’un StringBuilder objet.
StringBuilder myStringBuilder = new StringBuilder("Hello World!");
myStringBuilder.Insert(6,"Beautiful ");
Console.WriteLine(myStringBuilder);
// The example displays the following output:
// Hello Beautiful World!
Dim myStringBuilder As New StringBuilder("Hello World!")
myStringBuilder.Insert(6, "Beautiful ")
Console.WriteLine(myStringBuilder)
' The example displays the following output:
' Hello Beautiful World!
Supprimer
Vous pouvez utiliser la méthode Remove pour supprimer un nombre spécifié de caractères de l’objet actuel StringBuilder , en commençant par un index de base zéro spécifié. L’exemple suivant utilise la méthode Remove pour raccourcir un StringBuilder objet.
StringBuilder myStringBuilder = new StringBuilder("Hello World!");
myStringBuilder.Remove(5,7);
Console.WriteLine(myStringBuilder);
// The example displays the following output:
// Hello
Dim myStringBuilder As New StringBuilder("Hello World!")
myStringBuilder.Remove(5, 7)
Console.WriteLine(myStringBuilder)
' The example displays the following output:
' Hello
Remplacer
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 un StringBuilder objet pour toutes les instances du caractère de point d’exclamation ( !) et les remplacer par le caractère de point d’interrogation ( ?).
StringBuilder myStringBuilder = new StringBuilder("Hello World!");
myStringBuilder.Replace('!', '?');
Console.WriteLine(myStringBuilder);
// The example displays the following output:
// Hello World?
Dim myStringBuilder As New StringBuilder("Hello World!")
myStringBuilder.Replace("!"c, "?"c)
Console.WriteLine(myStringBuilder)
' The example displays the following output:
' Hello World?
Conversion d’un objet StringBuilder en chaîne
Vous devez convertir l’objet StringBuilder en objet String avant de pouvoir passer la chaîne représentée par l’objet StringBuilder à une méthode qui a un String paramètre ou l’afficher dans l’interface utilisateur. Pour effectuer cette conversion, appelez la StringBuilder.ToString méthode. L’exemple suivant appelle un certain nombre de StringBuilder méthodes, puis appelle la StringBuilder.ToString() méthode pour afficher la chaîne.
using System;
using System.Text;
public class Example
{
public static void Main()
{
StringBuilder sb = new StringBuilder();
bool flag = true;
string[] spellings = { "recieve", "receeve", "receive" };
sb.AppendFormat("Which of the following spellings is {0}:", flag);
sb.AppendLine();
for (int ctr = 0; ctr <= spellings.GetUpperBound(0); ctr++) {
sb.AppendFormat(" {0}. {1}", ctr, spellings[ctr]);
sb.AppendLine();
}
sb.AppendLine();
Console.WriteLine(sb.ToString());
}
}
// The example displays the following output:
// Which of the following spellings is True:
// 0. recieve
// 1. receeve
// 2. receive
Imports System.Text
Module Example
Public Sub Main()
Dim sb As New StringBuilder()
Dim flag As Boolean = True
Dim spellings() As String = {"recieve", "receeve", "receive"}
sb.AppendFormat("Which of the following spellings is {0}:", flag)
sb.AppendLine()
For ctr As Integer = 0 To spellings.GetUpperBound(0)
sb.AppendFormat(" {0}. {1}", ctr, spellings(ctr))
sb.AppendLine()
Next
sb.AppendLine()
Console.WriteLine(sb.ToString())
End Sub
End Module
' The example displays the following output:
' Which of the following spellings is True:
' 0. recieve
' 1. receeve
' 2. receive