Разделить массив, используя подмассив как разделитель

SharpA

Есть массив Byte[] или List . Мне нужно разделить этот массив на два, используя как разделитель мою последовательнойсть байт, а именно вот такую строку в байтовом эквиваленте \r\n\r\n что будет 13 10 13 10 в байтовом представлении. Подскажите как решить эту задачу наиболее быстрым способом, так как процедура будет выполняться в многопоточном приложении довольно часто, тоесть требование к скорости большое. Заранее спасибо.
1 ответ

SharpA

using System;
using System.Collections.Generic;
using System.Linq;
 
namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args) {
            List<Byte> bytes = "some\r\n\r\ngoods".Select(c => (byte)c).ToList();
            IEnumerable<Byte> before = (IEnumerable<Byte>) (new byte[] { });
            IEnumerable<Byte> after = (IEnumerable<Byte>)(new byte[] { });
            for (int i = 0; i < bytes.Count; i++) {
                if (bytes[i] == 13 &&
                    bytes[i + 1] == 10 &&
                    bytes[i + 2] == 13 &&
                    bytes[i + 3] == 10)
                {
                    before = bytes.Take(i);
                    after = bytes.Skip(i + 4);
                }
            }
 
            Console.Write("Before: ");
            foreach (byte b in before)
                Console.Write("{0}", (char)b);
 
            Console.Write("\nAfter: ");
            foreach (byte b in after)
                Console.Write("{0}", (char)b);
            Console.WriteLine();
        }
    }
}