List<string>
有(“ABC”,“”,“DEF”,“”,“XYZ”),如何从List中获取字符串“ABC :: DEF :: XYZ” C#?
List<string> strings = new List<string> {"ABC","","DEF","","XYZ"};
string joined = string.Join("::", strings.ToArray());
Console.WriteLine(joined);
给出ABC::::DEF::::XYZ
,而不是ABC::DEF::XYZ
,如何跳过列表中的空字符串(“”)?
答案 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)
string.Join( ":", list )
。如果您使用的是3.5或更早版本,string.Join( ":", list.ToArray() )
答案 4 :(得分:0)
你应该看看String.Join(),例如String.Join(“:”,list.ToArray());
答案 5 :(得分:0)
将string.Join
与ToArray
一起使用即可。
作为Ani said,如果您使用的是.NET 4.0,则可以忽略ToArray
。
如果你在.NET 4.0上不但你不想要ToArray
调用的开销,你可以编写一个方法来创建StringBuilder
,追加List<string>
中的每一项加上您的分隔符(在最后一项之后跳过分隔符),并在结尾处返回ToString
的结果。
答案 6 :(得分:0)