Partager via


Comment séparer des chaînes à l’aide de String.Split en C #

La méthode String.Split crée un tableau de sous-chaînes en fractionnant la chaîne d’entrée en fonction d’un ou plusieurs délimiteurs. Cette méthode est souvent le moyen le plus simple de séparer une chaîne sur les limites des mots.

Notes

Les exemples C# de cet article s’exécutent dans l’exécuteur et le terrain de jeu du code inline Try.NET. Sélectionnez le bouton Exécuter pour exécuter un exemple dans une fenêtre interactive. Une fois que vous avez exécuté le code, vous pouvez le modifier et exécuter le code modifié en resélectionnant Exécuter. La code modifié s’exécute dans la fenêtre interactive ou, si la compilation échoue, la fenêtre interactive affiche tous les messages d’erreur du compilateur C#.

Conseil / Astuce

Vous pouvez utiliser l’assistance IA pour fractionner une chaîne.

Fractionner une chaîne en mots

Le code suivant fractionne une expression commune en un tableau de chaînes pour chaque mot.

string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ');

foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}

Chaque instance d’un caractère de séparation génère une valeur dans le tableau retourné. Étant donné que les tableaux en C# sont indexés zéro, chaque chaîne du tableau est indexée de 0 à la valeur retournée par la propriété Array.Length moins 1 :

string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ');

for (int i = 0; i < words.Length; i++)
{
    Console.WriteLine($"Index {i}: <{words[i]}>");
}

Les surcharges de fonction String.Split sont nombreuses. Ces surcharges personnalisent le comportement de fractionnement des chaînes :

  • Vous pouvez spécifier des séparateurs comme des valeurs char ou des valeurs string.
  • Vous pouvez spécifier un séparateur ou plusieurs séparateurs. Si vous spécifiez plusieurs séparateurs, ils doivent tous être du même type (soit charstring).
  • Vous pouvez spécifier le nombre maximal de sous-chaînes à retourner.
  • Vous pouvez spécifier si les caractères de séparation répétés sont ignorés ou produisent des sous-chaînes vides dans la valeur de retour.
  • Vous pouvez spécifier si l’espace blanc de début et de fin est supprimé des sous-chaînes retournées.

Les exemples restants utilisent des surcharges différentes pour afficher chacun de ces comportements.

Pour plus d’informations sur les index, consultez l’article Explorer les index et plages .

Spécifier plusieurs séparateurs

String.Split peut utiliser plusieurs caractères de séparation. L’exemple suivant utilise des espaces, des virgules, des points, des deux-points et des onglets comme des caractères de séparation qui sont transmis à Split dans un tableau. La boucle en bas du code affiche chacun des mots dans le tableau retourné.

char[] delimiterChars = [' ', ',', '.', ':', '\t'];

string text = "one\ttwo three:four,five six seven";
Console.WriteLine($"Original text: '{text}'");

string[] words = text.Split(delimiterChars);
Console.WriteLine($"{words.Length} words in text:");

foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}

Les instances consécutives d’un séparateur produisent une chaîne vide dans le tableau de sortie :

char[] delimiterChars = [' ', ',', '.', ':', '\t'];

string text = "one\ttwo :,five six seven";
Console.WriteLine($"Original text: '{text}'");

string[] words = text.Split(delimiterChars);
Console.WriteLine($"{words.Length} words in text:");

foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}

String.Split peut accepter un tableau de chaînes (séquences de caractères, à la place de caractères uniques, qui agissent comme séparateurs lors de l’analyse de la chaîne cible).

string[] separatingStrings = ["<<", "..."];

string text = "one<<two......three<four";
Console.WriteLine($"Original text: '{text}'");

string[] words = text.Split(separatingStrings, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine($"{words.Length} substrings in text:");

foreach (var word in words)
{
    Console.WriteLine(word);
}

Limiter la taille de sortie

L’exemple suivant montre comment limiter la sortie aux quatre premières sous-chaînes de la chaîne source.

string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ', 4, StringSplitOptions.None);

foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}

Supprimer les sous-chaînes vides

Les caractères de séparation consécutifs produisent une chaîne vide comme valeur dans le tableau retourné. Vous pouvez voir comment une chaîne vide est créée dans l’exemple suivant, qui utilise le caractère espace comme séparateur.

string phrase = "The quick brown    fox     jumps over the lazy dog.";
string[] words = phrase.Split(' ');

foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}

Ce comportement facilite l’utilisation de formats tels que les fichiers CSV (valeurs séparées par des virgules) représentant des données tabulaires. Les virgules consécutives représentent une colonne vide.

Vous pouvez passer un paramètre StringSplitOptions.RemoveEmptyEntries facultatif pour exclure toutes les chaînes vides dans le tableau retourné. Pour un traitement plus complexe de la collection retournée, vous pouvez utiliser LINQ pour manipuler la séquence de résultat.

Découper les espaces blancs

L’exemple suivant montre l’effet de la réduction des entrées :

string numerals = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10";
string[] words = numerals.Split(',', StringSplitOptions.TrimEntries);

Console.WriteLine("Trimmed entries:");
foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}
words = numerals.Split(',', StringSplitOptions.None);
Console.WriteLine("Untrimmed entries:");
foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}

Les entrées nontrimmées ont des espaces blancs supplémentaires avant les chiffres.

Utiliser l’IA pour fractionner une chaîne

Vous pouvez utiliser des outils IA, tels que GitHub Copilot, pour générer du code pour fractionner des chaînes à l’aide String.Split de C#. Vous pouvez personnaliser l’invite pour utiliser des chaînes et des délimiteurs selon vos besoins.

Le texte suivant montre un exemple d’invite pour le chat Copilot :

Generate C# code to use Split.String to split a string into substrings.
Input string is "You win some. You lose some." Delimiters are space and period.
Provide example output.

GitHub Copilot est alimenté par l’IA, donc des surprises et des erreurs sont possibles. Pour plus d’informations, consultez les QUESTIONS fréquentes (FAQ) copilot.

Voir aussi