在C#中将字符串与它们之间的分隔符合并在一起

时间:2011-07-22 11:20:43

标签: c#

我需要将List<string>内的字符串合并到oneliner中。我提出了简单的解决方案,但我不确定这是否是最好的方法。

第一个版本在字符串开头出现问题,

string benchmarkiUjemneDatyRazem = "";
foreach (string s in benchmarkiUjemne) {
    benchmarkiUjemneDatyRazem = benchmarkiUjemneDatyRazem + "," + s;
}

第二版(Linq power)但仍然使用`:

string benchmarkiUjemneDatyRazem = benchmarkiUjemne.Aggregate("", (current, s) => current + "," + s);

没有,的工作版本,但行数量在以后读取时会有些痛苦:

   int b = 0;
   string benchmarkiUjemneDatyRazem = "";
   foreach (string s in benchmarkiUjemne) {
       if (b == 0) {
          b = 1;
          benchmarkiUjemneDatyRazem = s;
          continue;
       }
       benchmarkiUjemneDatyRazem = benchmarkiUjemneDatyRazem + "," + s;
  }

我提出的最终版本是基于Linq with Subsitute to first char:

    string benchmarkiUjemneDatyRazem = benchmarkiUjemne.Aggregate("", (current, s) => current + "," + s).Substring(1);

这是解决这个问题的好方法吗?或者有更好的方法来实际做到这一点?就像使用StringBuilder一样?

2 个答案:

答案 0 :(得分:6)

如果您使用的是.Net 4,则可以使用string.Join(在早期版本中,仅当benchmarkiUjemnestring[]时才会有效):

string result = string.Join(",", benchmarkiUjemne);

如果是.Net 3.5或更早版本,您仍然可以通过调用列表中的ToArray来使用它:

string result = string.Join(",", benchmarkiUjemne.ToArray());

答案 1 :(得分:3)

使用string.Join

var res = string.Join(",", benchmarkiUjemne);