Home > DeveloperSection > Forums > Search for a header and put that header in a list
Royce Roy
Royce Roy

Total Post:134

Points:938
Posted on    March-29-2014 4:17 AM

 C# C# 
Ratings:


 1 Reply(s)
 782  View(s)
Rate this:

I have a textfile with blogposts, each blogpost is divided in a header and content shown below

    #Header

    A post        

    #Content

    My content goes here...

    #Header

    Another post

    #Content

    My content goes here...

Now I want to grab all the headers, the text that comes after #Header and before #Content and put that in a List<>. How can I do that?

This is what I have come up with so far:

var headers = new List<string>();

using (StreamReader reader = new StreamReader(Path))

        {

            string line;

            while ((line = reader.ReadLine()) != null)

            {

                headers.AddRange(line)

                    .SkipWhile(l => l != "#Header")

                    .Skip(1)

                    .TakeWhile(l => !l.StartsWith("#"))

                    .ToList();

            }

        }

Linq is preferred.



Pravesh Singh

Total Post:411

Points:2881
Posted on    March-29-2014 7:04 AM

Hi Royce,

You can use regex with LINQ

string contents = File.ReadAllText("yourTextFile.txt");

List<string> header=Regex.Matches(contents,@"#Header\s*(.*?)\s*#",RegexOptions.IgnoreCase | RegexOptions.Singleline)

.Cast<Match>()

.Select(x=>x.Groups[1].Value).ToList<string>();



Don't want to miss updates? Please click the below button!

Follow MindStick