Как поставить разделитель через заданное количество элементов в строке?

В C# есть несколько способов поставить разделитель через заданное количество элементов в строке. Ниже приведены два варианта решения.

Первый способ - использование цикла:

string[] elements = { "элемент1", "элемент2", "элемент3", "элемент4", "элемент5", "элемент6", "элемент7" };
string delimiter = ",";
int elementsPerLine = 3; // количество элементов в строке
var result = new StringBuilder();
for (int i = 0; i < elements.Length; i++)
{
    result.Append(elements[i]);
    if ((i + 1) % elementsPerLine == 0 && i != elements.Length - 1)
    {
        result.Append(delimiter);
    }
    else if (i != elements.Length - 1)
    {
        result.Append(" ");
    }
}
string finalString = result.ToString();
Console.WriteLine(finalString);

В данном примере есть массив elements, переменная delimiter, которая содержит значение разделителя (в данном случае это запятая), и переменная elementsPerLine, которая указывает, сколько элементов должно быть в одной строке.

Затем создаётся экземпляр класса StringBuilder для построения результирующей строки. В цикле перебираются элементы массива elements. Если текущий индекс делится на elementsPerLine без остатка и это не последний элемент, то добавляется разделитель. В противном случае, добавляется пробел. В конце цикла созданная строка преобразуется в тип string и выводится на консоль.

Второй способ - использование методов Linq:

string[] elements = { "элемент1", "элемент2", "элемент3", "элемент4", "элемент5", "элемент6", "элемент7" };
string delimiter = ",";
int elementsPerLine = 3; // количество элементов в строке
var result = string.Join(delimiter, elements.Select((x, i) => new { Value = x, Index = i }))
            .Replace($",{delimiter}", delimiter)
            .Split(delimiter)
            .Select((x, i) => new { Value = x, Group = i / elementsPerLine })
            .GroupBy(x => x.Group)
            .Select(g => string.Join(" ", g.Select(x => x.Value)))
            .ToList();
string finalString = string.Join(Environment.NewLine, result);
Console.WriteLine(finalString);

В данном примере метод Join принимает разделитель и IEnumerable<string>, созданное на основе массива elements. Далее с помощью метода Select добавляются индексы элементов. Затем вызываются методы Replace, Split, Select, GroupBy и Join, чтобы разделить строку, сгруппировать элементы и повторно объединить их в строку. Наконец, результирующая строка выводится на консоль.