Как разделить строку после того, как некий символ встретился N раз?

Есть строка символов "1111,2222,3333,4444,5555"

Как разделить её после того, как символ "," встретится 3й раз? чтобы получить 1111,2222,3333, и 4444,5555 Как разделить строку после того, как некий символ встретился N раз?

string[] data = `Str.Split`

  (new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);

делит cразу после первого.

Возможно есть какое-то ниндзюцу для Str.Split, чтобы засунуть в параметы маску типа

{","},{any symbols},{","} обновил описание. При использовании метода от EvgeniyZ

Str.Split(new[]{','}, 3). 

Если его применить так

string str2 = "1111,2222,3333,4444,5555";

string[] data1 = str2.Split(new string[] {","}, 3, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine($"{data1[0]}, \n {data1[1]}, \n {data1[2]}");

получаем

1111,
 2222,
 3333,4444,5555

но ожидаемый результат

1111,2222,3333,
4444,5555

Ответы (1 шт):

Автор решения: Frehzy

Метод для получения всех индексов указанного символа (searchstring) в строке:

public static class StrExtention
{
    public static IEnumerable<int> AllIndexesOf(this string str, string searchstring)
    {
        int minIndex = str.IndexOf(searchstring);
        while (minIndex != -1)
        {
            yield return minIndex;
            minIndex = str.IndexOf(searchstring, minIndex + searchstring.Length);
        }
    }
}

Сам алгоритм:

var str = "1111,2222,3333,4444,5555"; //строка
var n = 2;
var needIndex = str.AllIndexesOf(",").ElementAt(n - 1) + 1; //берём индекс 2 запятой
var result = Enumerable.Range(0, 2)
                       .Select(x => str.Substring(x * needIndex, x == 0 ? needIndex : str.Length - x * needIndex))
                       .ToList();

P.S. Не знал, как красивее сделать x == 0 ? needIndex : str.Length - x * needIndex этот момент, поэтому решил просто сделать в лоб. Если есть предложения, как это красивее сделать, напишите в комментариях - поправлю

Результаты:

введите сюда описание изображения

введите сюда описание изображения

→ Ссылка