Как из массива строк получить одну строку?
Было:
string[] many = { "ab", "bc", "cd", "de" };
Стало:
string one = "abbccdde";
Метод String.Join сцепляет элементы указанного массива или элементы коллекции, помещая между ними заданный разделитель.
string one = string.Join(null, many);
Для этого существует специальный метод String.Concat
string[] many = { "ab", "bc", "cd", "de" };
string one = string.Concat(many);
Некоторые перегрузки метода Concat используют внутри себя StringBuilder, например метод принимающий IEnumerable<T> values. Другие перегрузки используют внутри себя небезопасный код, например метод принимающий params String[] values. Все это должно давать хорошую производительность при конкатенации строк.
Еще можно используя StringBuilder.Append, к примеру:
string[] many = { "ab", "bc", "cd", "de" };
StringBuilder sb = new StringBuilder();
many.ForEach(x => sb.Append(x));
Console.WriteLine(string.Format("Result: " + sb)); // Result: abbccdde
Доступные методы слияния строк:
(+)Ответ можно дополнить дополнительными способами, если таковые имеются.
Самый банальный наверно способ:
string[] many = { "ab", "bc", "cd", "de" };
string one = "";
for (int i = 0; i < many.Length; i++)
{
one += many[i];
}
ab, abbc, abbccd, abbccdde. Далеко не самый оптимальный способ.
– Nick Volynkin
Aug 09 '16 at 06:31
StringBuilder.
– VladD
Aug 09 '16 at 07:06
StringBuilder — это просто практически бесполезный код, раз в библиотеке есть лучшая функция. Но он хоть эффективен. Не стоит плюса, как рекомендующий неоптимальный подход, но не стоит на мой взгляд и минуса.
– VladD
Aug 09 '16 at 07:22
string.Format- преобразует значения объектов в строки на основе указанных форматов и вставляет их в другую строку. Соответственно его можно использовать либо в методе, который преобразует массив в строку, перебирая элементы, либо в Lambda-запросе. Я привел доступные в моем понимании методы слияния строк, даже типичное преобразование. Результатом будет строка – Denis Bubnov Aug 09 '16 at 07:21string resultPlus = string.Empty; many.ForEach(x => resultPlus = string.Format("{0}{1}", resultPlus, x) );– Denis Bubnov Aug 09 '16 at 07:55many.ForEach(x => sb.Append(x));? Чем это лучшеforeach (var x in many) sb.Append(x);? – VladD Aug 09 '16 at 09:03