在C#</string>中从List <string>构建一个字符串

时间:2011-02-16 05:17:31

标签: c# list

List<string>有(“ABC”,“”,“DEF”,“”,“XYZ”),如何从List中获取字符串“ABC :: DEF :: XYZ” C#?

ADDED

List<string> strings = new List<string> {"ABC","","DEF","","XYZ"};
string joined = string.Join("::", strings.ToArray());
Console.WriteLine(joined);

给出ABC::::DEF::::XYZ,而不是ABC::DEF::XYZ,如何跳过列表中的空字符串(“”)?

7 个答案:

答案 0 :(得分:7)

你可以这样做:

List<string> strings = ...
string joined = string.Join(":", strings.ToArray());

在.NET 4.0中,您可以省略ToArray()来电。

编辑:根据您的更新,表明您要跳过空字符串并使用两个冒号作为分隔符,您可以执行以下操作:

// Use !string.IsNullOrEmpty or !string.IsNullOrWhiteSpace if more appropriate.   
string[] filtered = list.Where(s => s != string.Empty) 
                        .ToArray();

string joined = string.Join("::", filtered);

答案 1 :(得分:2)

string result = string.Join("::", list.Where(s => !string.IsNullOrEmpty(s)).ToArray());

答案 2 :(得分:1)

string.Join("::", strings.Where(item=>!string.IsNullOrEmpty(item)).ToArray()); 

答案 3 :(得分:0)

.NET 4.0中的

string.Join( ":", list )。如果您使用的是3.5或更早版本,string.Join( ":", list.ToArray() )

答案 4 :(得分:0)

你应该看看String.Join(),例如String.Join(“:”,list.ToArray());

答案 5 :(得分:0)

string.JoinToArray一起使用即可。

作为Ani said,如果您使用的是.NET 4.0,则可以忽略ToArray

如果你在.NET 4.0上但你不想要ToArray调用的开销,你可以编写一个方法来创建StringBuilder,追加List<string>中的每一项加上您的分隔符(在最后一项之后跳过分隔符),并在结尾处返回ToString的结果。

答案 6 :(得分:0)

我想你可以查看The suggested method

发布此内容您只需string.Join(",", strings.ToArray())

即可

(用::)替换空字符串