Доброго времени суток! В данной статье мы рассмотрим способы объединения списка строк в одну
строку с использованием произвольного разделителя.
Списки в С# это что-то вроде «продвинутых массивов» (в основе списков те же массивы, как правило),
с которыми можно выполнять те же действия, что и с обычными массивами. Но у списков в 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# можно как минимум тремя способами.
Как видно из примеров выше, самый простой — это первый способ, хотя второй и третий предоставляют возможность
для дополнительной промежуточной обработки значения перед объединением его с остальной строкой.