Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Extract contents between specific tags in a textfile - C#

Tags:

c#

regex

I have a text file with the following information:

ALLOC

apple1
orange1
banana1

ALLOC
apple2
orange2
banana2

ALLOC
apple3
orange3
banana3

Based on the help from stackflow community, I am now able to read the whole file.I also found out that to extract contents between a tag, for ex, ALLOC, I could write:

var filelocation = @"c:\Fruits.txt";
var sectionLines = File.ReadAllLines(filelocation).TakeWhile(l => !l.StartsWith("ALLOC"));

But this will give me IEnumerable<string>:

apple1
orange1
banana1    
apple2
orange2
banana2    
apple3
orange3

How do I create 3 separate strings as

string1 = apple1 orange1 banana1
string2 = apple2 ornage2 banana2
string3 = apple3 orange3

In short, need to extract contents between tags.

like image 617
user7157732 Avatar asked Dec 14 '25 18:12

user7157732


1 Answers

Here is some approach how you can return result which you want:

string[] words = { "ALLOC", "apple1", "orange1", "banana1", "ALLOC", "apple2", "orange2", "banana2", "ALLOC" };

var result = string.Join(" ", words)
        .Split(new string[] { "ALLOC" }, StringSplitOptions.RemoveEmptyEntries)            
        .Select(p => p.Trim(' '));

First I am making single string of all words. Than I am splitting by "ALLOC", and selecting trimmed strings.

Result is:

string[] result = { "apple1 orange1 banana1", "apple2 orange2 banana2" };

For your case,

var filelocation = @"c:\Fruits.txt";
var allLines = File.ReadAllLines(filelocation);
var sectionLines = string.Join(" ", allLines)
            .Split(new string[] { "ALLOC" }, StringSplitOptions.RemoveEmptyEntries)            
            .Select(p => p.Trim(' '));
like image 174
kat1330 Avatar answered Dec 17 '25 10:12

kat1330



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!