Reputation: 1508
I have an array of bytes (say byte[] data), which contains text with custom line delimiters, for example: "\r\n" (CRLF "\x0D\x0A"), "\r", "\n", "\x0D\x0A\x0D" or even "@".
At the moment I'm going to use the following solution:
Use StringReader to read text line by line
using (String Reader sr = new StringReader(data.ToString()))
{
string line;
while ((line = sr.ReadLine()) != null)
{
// Process the line
}
}
I'm using C#, .NET 3.5. Is there any better solution?
Thanks.
Upvotes: 1
Views: 3518
Reputation: 99979
Here's one option to limit calls to string.Replace
to just the multi-character delimiters.
private static readonly char[] DelimiterChars = { '\r', '\n', '@' };
private static readonly string[] DelimiterStrings = { "\r\n\r", "\r\n" };
Then later...
string text = Encoding.ASCII.GetString(data);
foreach (string delim in DelimiterStrings)
text = text.Replace(delim, "\n");
foreach (string line in text.Split(DelimiterChars))
{
// processing here
}
Upvotes: 1