C#逐行读取文本,其中行分隔符是自定义的

时间:2010-01-02 17:31:19

标签: c# .net

我有一个字节数组(比如byte []数据),其中包含带有自定义行分隔符的文本,例如:“\ r \ n”(CRLF“\ x0D \ x0A”),“\ r”,“ \ n“,”\ x0D \ x0A \ x0D“或甚至”@“。

目前我将使用以下解决方案:

  1. 将换行符规范化为CRLF(以下是如何规范化CRLF What is a quick way to force CRLF in C# / .NET?的示例)
  2. 使用StringReader逐行读取文本

    
    using (String Reader sr = new StringReader(data.ToString()))
    {
        string line;
        while ((line = sr.ReadLine()) != null)
        {
            // Process the line 
        }
    }
    
  3. 我正在使用C#,.NET 3.5。 有没有更好的解决方案?

    感谢。

2 个答案:

答案 0 :(得分:1)

这是一个将string.Replace的调用限制为多字符分隔符的选项。

private static readonly char[] DelimiterChars = { '\r', '\n', '@' };
private static readonly string[] DelimiterStrings = { "\r\n\r", "\r\n" };

然后......

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
}

答案 1 :(得分:0)

使用regexp代替,这将为您提供更大的灵活性。