2 votes

LINQ; Sélectionner des groupes de lignes à partir d'un fichier texte

Salut Gurus, j'ai un fichier texte avec des groupes de texte que je dois séparer en tableaux de chaînes distincts. Comment puis-je regrouper ceux-ci en utilisant la ligne "start:" comme délimiteur? (les groupes peuvent contenir un nombre de lignes différent mais commencent tous par "start:"). Est-ce un travail que LINQ peut accomplir? (Chaque ligne a des données distinctes, cela ne semble pas être le cas dans l'aperçu).

List<string> lines = File.ReadAllLines(@"C:\test.txt").ToList();

start: data 1

boy: data 2

great: data 3

start: data 7

boy: data 8

great: data 9

girl: data 10

3voto

Saeed Amiri Points 16317

Peut-être qu'il y a une solution linq mais quand vous pouvez simplement gérer cela avec des boucles for, je pense qu'il n'y a pas besoin de linq, par exemple je pense que le code ci-dessous fait ce que vous voulez :

        var groups = new List>();

        foreach (var line in lines)
        {
            if (line.StartsWith("Start:"))
            {
                groups.Add(new List());
            }
            groups[groups.Count - 1].Add(line);
        }

J'avais supposé que la première ligne de votre fichier commence par Start: sinon vous devriez sauter les premières lignes jusqu'à atteindre le premier start:.

0voto

rerun Points 15285

File.ReadAllText(@"C:\test.txt").split("start:");

Lira le fichier et divisera le fichier en un tableau de chaînes sur l'étiquette start:.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X