string x;
foreach(var item in collection)
{
x += item+",";
}
我可以用lambdas写这样的东西吗?
答案 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