Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to read text file by particular line separator character?

Reading a text file using streamreader.

using (StreamReader sr = new StreamReader(FileName, Encoding.Default)) {      string line = sr.ReadLine(); } 

I want to force that line delimiter should be \n not \r. So how can i do that?

like image 490
User13839404 Avatar asked Jul 11 '11 19:07

User13839404


1 Answers

I would implement something like George's answer, but as an extension method that avoids loading the whole file at once (not tested, but something like this):

static class ExtensionsForTextReader {      public static IEnumerable<string> ReadLines (this TextReader reader, char delimiter)      {             List<char> chars = new List<char> ();             while (reader.Peek() >= 0)             {                 char c = (char)reader.Read ();                  if (c == delimiter) {                     yield return new String(chars.ToArray());                     chars.Clear ();                     continue;                 }                  chars.Add(c);             }      } } 

Which could then be used like:

using (StreamReader sr = new StreamReader(FileName, Encoding.Default)) {      foreach (var line in sr.ReadLines ('\n'))            Console.WriteLine (line); } 
like image 153
Pete Avatar answered Sep 19 '22 09:09

Pete