C#中有没有一个函数可以快速将一些集合转换为字符串并用分隔符分隔值?
例如:
List<string> names
--> string names_together = "John, Anna, Monica"
String.Join
。如果你有一个List<string>
那么你可以先打电话给ToArray
:
List<string> names = new List<string>() { "John", "Anna", "Monica" };
var result = String.Join(", ", names.ToArray());
在 .NET 4 中,您不再需要
ToArray
,因为 String.Join
的重载需要 IEnumerable<string>
.
在较新版本的 .NET 中,不同的
String.Join
重载使用不同的方法来产生结果。这可能会影响代码的性能。
例如,那些接受
IEnumerable
的人在幕后使用StringBuilder
。接受数组的那个使用了一个高度优化的数组和指针实现。
约翰、安娜、莫妮卡
如果愿意,您也可以使用 linq 执行此操作
var names = new List<string>() { "John", "Anna", "Monica" };
var joinedNames = names.Aggregate((a, b) => a + ", " + b);
尽管我更喜欢 Quartermeister 的回答中的非 linq 语法,而且我认为
Aggregate
可能执行得更慢(可能是更多的字符串连接操作)。
我在所有项目中使用的基于已接受答案的扩展方法:
public static string StringJoin(this IEnumerable<string> values, string separator)
{
return string.Join(separator, values);
}
用法:
var result = names.StringJoin(", ");
附言永远不要为此使用
Aggregate
,它比string.Join
慢两个数量级