Способы объединения списка в строку в С#

Способы объединения списка в строку в С#

Способы объединения списка в строку в С#

Доброго времени суток! В данной статье мы рассмотрим способы объединения списка строк в одну
строку с использованием произвольного разделителя.

Списки в С# это что-то вроде «продвинутых массивов» (в основе списков те же массивы, как правило),
с которыми можно выполнять те же действия, что и с обычными массивами. Но у списков в C# есть одно важное
преимущество — это автоматическое расширение собственного размере по мере того как элементы добавляются
в список, тогда как массивы имеют фиксированный размер.

Итак, перейдем непосредственно к коду:

Способ первый — использование метода String.Join()

using System;
using System.Collections.Generic;

public class JoinListExample
{
    public static void Main()
    {
        // список строк
        List<string> list = new List<string>() { "сайт", "My", "Rusakov", "Ru" };
        // разделитель
        char delimeter = ' / ';

        // объединяем список в строку
        string str = String.Join(delimeter, list);

        Console.WriteLine(str);
    }
}

/*
    Вывод: сайт / My / Rusakov
*/

Способ второй — использование метода Enumerable.Aggregate()


using System;
using System.Collections.Generic;

// подключаем пространство для использования метода Enumerable.Aggregate()
using System.Linq;

public class JoinListExample
{
    public static void Main()
    {
        // список строк
        List<string> list = new List<string>() { "сайт", "My", "Rusakov", "Ru" };
        // разделитель
        char delimeter = ' / ';

        // объединяем список в строку
        string str = list.Aggregate((item1, item2) => item1 + delimeter + item2);

        Console.WriteLine(str);
    }
}

Способ третий — использование класса StringBuilder


using System;
using System.Collections.Generic;
using System.Text;

public class JoinListExample
{
    public static void Main()
    {
        List<string> list = new List<string>() { "сайт", "My", "Rusakov", "Ru" };
        char delimeter = ' / ';

        // "ящик, куда будем складывать отдельные значения"
        StringBuilder stringBuilder = new StringBuilder();

        // проходимся циклом по списку
        for (int i = 0; i < list.Count; i++)
        {
            // добавляем значение из списка в класс-хранилище
            stringBuilder.Append(list[i]);

            // если мы добавляем не последний элемент из списка - то добавляем разделитель
            if (i < list.Count - 1) {
                stringBuilder.Append(delimeter);
            }
        }

        // в конце преобразуем класс в строку
        string str = stringBuilder.ToString();
        Console.WriteLine(str);
    }
}

Таким образом, объединить коллекцию значений в строку по разделителю в C# можно как минимум тремя способами.
Как видно из примеров выше, самый простой — это первый способ, хотя второй и третий предоставляют возможность
для дополнительной промежуточной обработки значения перед объединением его с остальной строкой.

Источник