public static string[] SplitEx(this string input, char separator, char escapeCharacter)
{
IList<string> values = new List<string>();
int startOfSegment = 0;
int index = 0;
while (index < input.Length)
{
index = input.IndexOf(separator, index);
if (index > 0 && input[index - 1] == escapeCharacter)
{
index++;
continue;
}
if (index == -1)
{
break;
}
values.Add(input.Substring(startOfSegment, index - startOfSegment));
index++;
startOfSegment = index;
}
values.Add(input.Substring(startOfSegment));
return values.ToArray();
}
}