Split string by substring without using String.Split()
private static string StringFromCursor(string toSplit, int cursorPosition, int matchStart)
{
    string result = string.Empty;

    for (int i = cursorPosition; i &lt; matchStart; i++)
    {
        result += toSplit[i].ToString();
    }

    return result;
}



This is a bad idea. Since C# string is immutable, the only way to support an append or += operation is to throw the old string away and build a new one.  Doing this repeatedly leads to an \$O(n^2)\$ running time. What you really need is a StringBuilder which does support building up strings piece by piece.