问题描述
如题,.NET中将一个字符串集合(List<string>或者IEnumerable<string>)连接成用逗号分隔的字符串有哪些方法?比如,当前有以下的字符串集合(List<string>):
var List<string> = new List<string> {"你好","世界","欢迎","学习","C#","系列","课程"};
在.NET/C#开发中,如果将以上的字符串集合使用逗号连接成一个字符串呢?
你能想到哪些方式来实现呢?
方案一
在.NET 4.0及以上版本中,使用string.Join(...)
方法:
IList<string> strings = new List<string>{"1","2","testing"};
string joined = string.Join(",", strings);
方案二
在.NET 4.0 以前的版本中,可以先将字符串集合转换成字符串数组,如:
IEnumerable<string> strings = ...;
string[] array = strings.ToArray();
具体转换的方法可以为:
public static T[] ToArray(IEnumerable<T> source)
{
return new List<T>(source).ToArray();
}
然后调用这个ToArray()
的方法,如:
IEnumerable<string> strings = ...;
string[] array = Helpers.ToArray(strings);
最后,使用string.Join(...)
方法来连接字符串数组,如:
// C# 3 或者 .NET 3.5 的方法:
string joined = string.Join(",", strings.ToArray());
// C# 2 或者 .NET 2.0 的方法:
string joined = string.Join(",", new List<string>(strings).ToArray());
方案三
使用LINQ
的Aggregate
方法,比如:
string commaSeparatedList = input.Aggregate((a, x) => a + ", " + x)
方案四
使用string.Join<T>
的泛型方法:
string.Join<string>(",", stringEnumerable);
具体的使用示例:
IEnumerable<string> stringEnumerable= new List<string>();
stringList.Add("Comma");
stringList.Add("Separated");
string.Join<string>(",", stringEnumerable);
注:此方法只适用于.NET 4.0 及以上的版本
方案五
创建一个静态扩展方法,如:
public static string Join(this IEnumerable<string> source, string separator)
{
return string.Join(separator, source);
}
方案六
创建一个方法,使用foreach
来拼接 (这是最原始的实现方式,不推荐使用)
private string ToStringList<T>(IEnumerable<T> list, string delimiter)
{
var sb = new StringBuilder();
string separator = String.Empty;
foreach (T value in list)
{
sb.Append(separator).Append(value);
separator = delimiter;
}
return sb.ToString();
}
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册