2010-10-19 43 views
4

HI全部 尝试将列表集合字符串转换为一个行字符串时出现问题。 但是,我必须用特定的格式编辑每个项目。将代码列表集合写入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- 

我知道有一些技术使用的foreach语句代码for循环。

但是,它可以编写代码只是将列表中的所有项目更改为特定的模式字符串。

所以项目集合字符串包含从“First”到“\ First /”或“Last”到“'Last'”。

方面

+0

请您重新说明一下问题。我已经阅读了几次,但我仍然不确定是什么问题。 – Neowizard 2010-10-19 09:04:04

+1

您可以使用初始化程序列表构建一个字符串集合(尽管它可能与您的场景不匹配):var items = new List (){“One”,“Two”,“Three”,};'。你也不必转换为数组来使用'string.Join'了。它现在有一个覆盖这个签名:'公共静态字符串加入(字符串分隔符,IEnumerable 值);' – 2010-10-19 09:07:07

回答

10

这听起来像你想使用之前加入的投影:

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

我个人认为,这比执行与更复杂的分隔符联接清晰。它感觉就像你实际上得到用逗号连接的[First],和[Third]项目 - 而不是由],[加入的FirstSecondThird项目。

你的第二种形式是同样容易实现:

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

需要注意的是,如果你使用的是.NET 4,你不需要ToArray通话,因为它引入了额外的过载,使string.Join容易的工作用。

+0

是的,这个代码我寻找,更优雅的写它。谢谢。 – 2010-10-19 09:10:11

3

为什么不

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

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

使用加入,然后在前面加个字符,并根据需要后:

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

将让你

[First],[Second],[Last] 
相关问题