2010-10-19 2 views
4

HI all У меня проблема при попытке преобразовать строку списка списков в одну строку строки. Но для каждого элемента я должен редактировать его в определенном формате.Запись списка кодов в строку в C#

Пример

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- 

Я знаю, что есть несколько техников, чтобы написать этот код, используя Еогеасп для цикла.

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

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

Regard

+0

Не могли бы вы перефразировать вопрос. Я читал его несколько раз, и я все еще не уверен, в чем проблема. – Neowizard

+1

Вы можете построить набор строк с инициализационным списком (хотя он может и не соответствовать вашему сценарию): 'var items = new List () {" One "," Two "," Three ",};'. Вам также не нужно преобразовывать в массив, чтобы использовать 'string.Join' больше. Теперь он имеет переопределение с этой сигнатурой: 'public static string Join (разделитель строк, значения IEnumerable );' –

ответ

10

Это звучит, как вы хотите проекцию перед использованием Регистрации:

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

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

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

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

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

+0

Да, этот код, что я ищу, более элегантный, чтобы написать его. Спасибо. –

3

Почему не

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

или

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

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

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

поможет вам

[First],[Second],[Last] 
Смежные вопросы