Записать коллекцию списка кодов в строку в c # - PullRequest
4 голосов
/ 19 октября 2010

Привет всем У меня проблема при попытке преобразовать строку коллекции списка в одну строку строки. Но для каждого элемента я должен редактировать в определенном формате.

Пример

List<string> items = new List<string>();
string result = string.Empty;

items.Add("First");
items.Add("Second");
items.Add("Last");

result = string.Join(",", items.ToArray());
Console.WriteLine(result); // Display: First,Second,Last

Но я хочу преобразовать что-то вроде этого:

[First],[Second],[Last]

или что-то вроде

--First-,--Second-,--Last-

Я знаю немного техники для написания этого кода с использованием foreach for loop.

Но может ли он написать код, просто изменив все элементы в коллекции списков на определенную строку шаблона.

Таким образом, строка коллекции элементов содержит как от «First» до «\ First /», так и от «Last» до «'Last» ».

Regard

Ответы [ 3 ]

10 голосов
/ 19 октября 2010

Звучит так, будто вы хотите проецировать перед использованием Join:

result = string.Join(",", items.Select(x => "[" + x + "]")
                               .ToArray());

Лично я думаю, что это понятнее, чем объединение с более сложным разделителем. Он чувствует как будто у вас на самом деле есть элементы [First], [Second] и [Third], объединенные запятыми, а не элементы First, Second и Third, объединенные ],[.

Ваша вторая форма одинаково легка для достижения:

result = string.Join(",", items.Select(x => "--" + x + "-")
                               .ToArray());

Обратите внимание, что вам не нужно ToArray вызывать, если вы используете .NET 4, так как в него введены дополнительные перегрузки для упрощения работы с string.Join.

3 голосов
/ 19 октября 2010

Почему бы не

var result = "--" + string.Join("-,--", items.ToArray()) + "--";

или

var result = "[" + string.Join("],[", items.ToArray()) + "]";
2 голосов
/ 19 октября 2010

Используйте объединение, а затем добавляйте символы перед и после по мере необходимости:

result = "[" + string.Join("],[", items.ToArray()) + "]"; 

получит вас

[First],[Second],[Last]
...