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. Elle sert également à fractionner des chaînes sur d’autres caractères ou chaînes spécifiques.
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#.
Exemples String.Split
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)
{
System.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++)
{
System.Console.WriteLine($"Index {i}: <{words[i]}>");
}
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)
{
System.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.
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";
System.Console.WriteLine($"Original text: '{text}'");
string[] words = text.Split(delimiterChars);
System.Console.WriteLine($"{words.Length} words in text:");
foreach (var word in words)
{
System.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";
System.Console.WriteLine($"Original text: '{text}'");
string[] words = text.Split(delimiterChars);
System.Console.WriteLine($"{words.Length} words in text:");
foreach (var word in words)
{
System.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";
System.Console.WriteLine($"Original text: '{text}'");
string[] words = text.Split(separatingStrings, System.StringSplitOptions.RemoveEmptyEntries);
System.Console.WriteLine($"{words.Length} substrings in text:");
foreach (var word in words)
{
System.Console.WriteLine(word);
}
Utiliser GitHub Copilot pour fractionner une chaîne
Vous pouvez utiliser GitHub Copilot dans votre IDE pour générer du code pour fractionner des chaînes à l’aide String.Split
de C#.
Si vous utilisez Visual Studio 2022 version 17.8 ou ultérieure, vous pouvez essayer GitHub Copilot basé sur l’IA dans Visual Studio pour générer du code pour fractionner une chaîne d’entrée en sous-chaînes basée sur un ou plusieurs délimiteurs. Soumettez votre question sous forme de requête dans la fenêtre de discussion de Copilot, comme dans l’exemple suivant. Vous pouvez également soumettre des requêtes en utilisant le chat en ligne dans la fenêtre de l’éditeur elle-même.
Remarque
GitHub Copilot est alimenté par l’IA, donc des surprises et des erreurs sont possibles. Assurez-vous de vérifier tout code ou suggestion généré. Pour plus d’informations sur l’utilisation générale de GitHub Copilot, l’impact du produit, la supervision humaine et la confidentialité, veuillez consulter FAQ GitHub Copilot.
Le texte suivant montre un exemple d’invite pour le chat Copilot :
Générez du code C# pour utiliser Split.String fractionner une chaîne en sous-chaînes. La chaîne d’entrée est « Vous gagnez certains. Tu perds un peu. Les délimiteurs sont des espaces et des points. Fournir un exemple de sortie.
Vous pouvez personnaliser l’invite pour utiliser des chaînes et des délimiteurs selon vos besoins.
Vous pouvez utiliser les fonctionnalités du chat, telles que les commandes à barres obliques, les références à des fichiers, des méthodes ou des classes, et les threads, pour définir l’intention et obtenir de meilleures réponses avec un contexte élargi. Pour un fichier existant ouvert dans l’IDE, vous pouvez inviter GitHub Copilot à utiliser la conversation inline avec /generate code to split string1 in #Filename by delimiter spaces
.
Voici un exemple de réponse du chat Copilot :
Here is an example of how you can use the Split method in C# to split the string "You win some. You lose some." using space and period as delimiters:
using System;
class Program
{
static void Main()
{
string input = "You win some. You lose some.";
char[] delimiters = new char[] { ' ', '.' };
string[] substrings = input.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
foreach (string substring in substrings)
{
Console.WriteLine(substring);
}
}
}
**Example Output**
You
win
some
You
lose
some
Lorsque Copilot retourne un bloc de code, la réponse inclut des options pour copier le code, insérer le code dans un nouveau fichier, ou prévisualiser la sortie du code.
Remarque
Vos résultats peuvent être différents de ce qui est montré dans les réponses d’exemple. Les modèles IA sont non déterministes, ce qui signifie qu’ils peuvent renvoyer des réponses différentes lorsqu’on leur pose la même question. Cela peut être dû à un apprentissage et à une adaptation supplémentaires au fil du temps, à une variation de la langue, à des changements de contexte, tels que l’historique de votre chat, et plus encore.
Pour plus d’informations, consultez l’article suivant :
- Centre de gestion de la confidentialité GitHub Copilot
- GitHub Copilot dans Visual Studio
- GitHub Copilot dans VS Code