我有一个整数值列表(列表),并想生成一个逗号分隔值的字符串。那就是列表中的所有项目输出到一个逗号分隔的列表中。
我的想法… 1.将列表传递给方法。2.使用stringbuilder迭代列表并附加逗号。3.测试最后一个字符,如果它是逗号,则将其删除。
你怎么看?这是最好的方法吗?
如果将来我不仅要处理整数(当前的计划)而且要处理字符串,长整型,双精度型,布尔型等,我的代码将如何更改?我想让它接受任何类型的列表。
框架已经为我们做的事情真是令人惊讶。
List<int> myValues; string csv = String.Join(",", myValues.Select(x => x.ToString()).ToArray());
对于一般情况:
IEnumerable<T> myList; string csv = String.Join(",", myList.Select(x => x.ToString()).ToArray());
如您所见,实际上没有什么不同。请注意,如果包含逗号x.ToString(),则可能需要用引号引起来(例如"\"" + x.ToString() + "\"")x.ToString()。
x.ToString()
"\"" + x.ToString() + "\""
有关此变化的有趣读物:请参见Eric Lippert博客上的Comma Quibbling。
注意:这是在.NET 4.0正式发布之前编写的。现在我们可以说
IEnumerable<T> sequence; string csv = String.Join(",", sequence);
使用重载String.Join<T>(string, IEnumerable<T>)。此方法将自动将每个元素投影x到x.ToString()。
String.Join<T>(string, IEnumerable<T>)
x