【发布时间】:2018-11-18 06:45:22
【问题描述】:
我想创建一个函数,它将字符串列表作为参数,将它们连接成一个字符串,每个元素用逗号分隔,然后返回结果。例如,如果将数组[“asdf”, “jkl”, “zxc”]传递给函数,它将返回一个字符串“asdf, jkl, zxc”。
在 C# 中,我的函数签名如下所示:
string MySolution(string[] inputStrings)
{
List<string> cities = new List<string>();
cities.Add("New York");
cities.Add("Mumbai");
cities.Add("Berlin");
cities.Add("Istanbul");
string line = string.Join(",", cities.ToArray());
Console.WriteLine(line);
}
--我只是在用户输入时遇到问题,用户将在其中输入值,而不是代码中显示的静态。我将不胜感激有关此的任何建议或答案。这也保留在我申请的公司中作为测试。
【问题讨论】:
-
您在寻找
string.Join吗?例如return string.Join(", ", inputStrings); -
是的。我想创建一个将字符串列表作为参数的函数,它必须适用于传递给它的任何数组
-
@Aries 这就是
String.Join所做的。你不需要创建一个新的。检查its source code 以了解它如何处理任何集合或变量参数列表 -
Currying 方法虽然非常有用。您可以创建自己的,例如 JoinComma 作为
public static string JoinComma(IEnumerable<string> items)=>String.Join(",",items);或使用本地函数string commaJoins(IEnumerable<string> items)=>String.Joins(",",items);。或者您可以使用类似的语法来创建Func<IEnumerable<string>,string> commaJoiner= items=>String.Join(",",items);或 -
@Aries 您可以通过创建一个接受分隔符并返回
Func<IEnumerable...的函数来概括这一点,例如Func<IEnumerable<string>,string> curryJoiner(string sep){ Func<IEnumerable<string>,string> myJoiner= items=>String.Join(sep,items); return myJoiner;}