C#: Looping Through Lines Of Multiline String


Answer :

I suggest using a combination of StringReader and my LineReader class, which is part of MiscUtil but also available in this StackOverflow answer - you can easily copy just that class into your own utility project. You'd use it like this:

string text = @"First line second line third line";  foreach (string line in new LineReader(() => new StringReader(text))) {     Console.WriteLine(line); } 

Looping over all the lines in a body of string data (whether that's a file or whatever) is so common that it shouldn't require the calling code to be testing for null etc :) Having said that, if you do want to do a manual loop, this is the form that I typically prefer over Fredrik's:

using (StringReader reader = new StringReader(input)) {     string line;     while ((line = reader.ReadLine()) != null)     {         // Do something with the line     } } 

This way you only have to test for nullity once, and you don't have to think about a do/while loop either (which for some reason always takes me more effort to read than a straight while loop).


You can use a StringReader to read a line at a time:

using (StringReader reader = new StringReader(input)) {     string line = string.Empty;     do     {         line = reader.ReadLine();         if (line != null)         {             // do something with the line         }      } while (line != null); } 

I know this has been answered, but I'd like to add my own answer:

using (var reader = new StringReader(multiLineString)) {     for (string line = reader.ReadLine(); line != null; line = reader.ReadLine())     {         // Do something with the line     } } 

Comments

Popular posts from this blog

Are Regular VACUUM ANALYZE Still Recommended Under 9.1?

Can Feynman Diagrams Be Used To Represent Any Perturbation Theory?