[.NET/C#].NET中将一个字符串集合(List<string>或者IEnumerable<string>)连接成用逗号分隔的字符串有哪些方法?

.NET 作者: Rector 711阅读 0评论 0收藏 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

如题,.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());

方案三

使用LINQAggregate方法,比如:

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();
}

阅读了该文章的人还浏览了...

本文永久链接码友网 » [.NET/C#].NET中将一个字符串集合(List<string>或者IEnumerable<string>)连接成用逗号分隔的字符串有哪些方法?

发布于: 2018-01-29 13:21:20
分享扩散:

文章评论

获取验证码