Search code examples
c#stringstreamreader

Stream Reader Readline detect newline characters


I'm trying to remove any "new line" characters from each line of text in my log file.

Below is an example entry that I am reading in with a Stream Reader :-

<![LOG[Raising event:
[SMS_CodePage(850), SMS_LocaleID(2057)]
instance of SoftDistProgramStartedEvent
{
    AdvertisementId = "000216F6";
    ClientID = "GUID:B55C2757-CBAE-468E-B54F-46CAF2ECF68F";
    CommandLine = "\"C:\\WINNT\\system32\\cscript.exe\" /nologo Shutdown_Desktops_Overnight.vbs";
    DateTime = "20130211080211.784000+000";
    MachineName = "DWD*****";
    PackageName = "0000073C";
    ProcessID = 2516;
    ProgramName = "Shutdown Desktops Overnight";
    SiteCode = "S00";
    ThreadID = 3640;
    UserContext = "NT AUTHORITY\\SYSTEM";
    WorkingDirectory = "C:\\WINNT\\system32\\CCM\\Cache\\0000073C.1.System\\";
};
]LOG]!><time="08:02:11.800+000" date="02-11-2013" component="execmgr" context="" type="1" thread="3640" file="event.cpp:522">

In the actual Logfile this is displayed as one line in the file, with the "New Line Characters" replaced with a square.

I'm using the following code to read in the log entries :-

using (StreamReader sr = new StreamReader(@"C:\Documents and Settings\riversd\Desktop\Logfile2.log"))
        {
            string Line;

            while ((Line = sr.ReadLine()) != null)
            {

            }
        }

The issue is that when the StreamReader reads this entry from the txt file it breaks at :-

"<![LOG[Raising event:"

I need to remove all new line characters in this entry, on the fly. I don't want to read the entire file into memory and then remove them, I'd rather deal with each log as I read it.

Is it possible?


Solution

  • sr.ReadLine().Replace(Environment.NewLine, String.Empty);
    

    EDIT: In case the end of line is not \r\n but \n you can use regex:

    Line = Regex.Replace(sr.ReadLine(), @"(\r\n|\n)", String.Empty);