使用foreach将字符串[]转换为字符串

时间:2009-05-10 09:20:28

标签: c# lambda

string x;
foreach(var item in collection)
{
   x += item+",";
}

我可以用lambdas写这样的东西吗?

5 个答案:

答案 0 :(得分:18)

假设C#,你试过String.Join()吗?或者使用lambdas强制性?

示例:

string[] myStrings = ....;
string result = String.Join(",", myStrings);

修改

虽然原始标题(和示例)是关于使用分隔符连接字符串(String.Join()在我看来最好的工作),原始海报似乎询问更广泛的解决方案:如何应用自定义格式化字符串列表。

我对此的回答是编写自己的方法。 String.Join有一个目的,由其名称反映(连接一些字符串)。您的格式逻辑很有可能在您的项目中具有意义,因此请编写它,给它一个正确的名称并使用它。

例如,如果您想为每个项目输出<li>text</li>,请按以下方式输出:

string FormatAsListItems(string[] myStrings)
{
    StringBuilder sb = new StringBuilder();
    foreach (string myString in myStrings)
    {
         sb.Append("<li>").Append(myString).Append("</li>");
    }
}

我认为意图更清晰,而且你也不会在循环中获得连接字符串的性能损失。

答案 1 :(得分:5)

string x = string.Join(",", collection);

答案 2 :(得分:2)

您对解决方案的看法太过分了。 String类有一个Join方法:

string x = String.Join(",", collection);

答案 3 :(得分:1)

这会回答你的问题吗?

Most efficient way to concatenate strings?

请注意,您可以使用Aggregate执行此操作,但内置的string.Join更易于使用,对于长数组也更快。

答案 4 :(得分:1)

string[] text = new string[] { "asd", "123", "zxc", "456" };

var result = texts.Aggregate((total, str) => total + "," + str);

更短的语法,感谢Earwicker