Взгляните на " Функция разбиения LSteinle, которая поддерживает классификаторы текста " в проекте Code
Вот фрагмент его проекта, который вас интересует.
using System.Text.RegularExpressions;
public string[] Split(string expression, string delimiter, string qualifier, bool ignoreCase)
{
string _Statement = String.Format("{0}(?=(?:[^{1}]*{1}[^{1}]*{1})*(?![^{1}]*{1}))",
Regex.Escape(delimiter), Regex.Escape(qualifier));
RegexOptions _Options = RegexOptions.Compiled | RegexOptions.Multiline;
if (ignoreCase) _Options = _Options | RegexOptions.IgnoreCase;
Regex _Expression = New Regex(_Statement, _Options);
return _Expression.Split(expression);
}
Просто следите за вызовом этого в цикле, поскольку он создает и компилирует оператор Regex каждый раз, когда вы вызываете его. Поэтому, если вам нужно вызывать его несколько раз, я бы посмотрел на создание кеша Regex какого-то рода.