1

这是一种经常出现在我们框架的一部分中的模式。给定一个字符串数组,我们必须将它们全部连接起来,用分号分隔。

我想知道它可以以哪种优雅的方式完成。我已经在我们的代码库中看到了一些变化,并且总是,当我必须这样做时,我必须重新考虑。

我目前的模式是这样的:

String[] values = new String[] {"a","b","c","d"};
String concat = String.Empty;
foreach(String s in values)
{
   if(String.IsEmptyOrNullString(s) == false)
       concat + = ", ";
   concat += s;
}

否定我的是 if 语句,我可以在循环之前插入第一项并从 for 循环开始,从索引 1 开始,但这不会增加可读性。

你有什么建议?

4

2 回答 2

7

您可以使用string.Join()

String[] values = new String[] {"a","b","c","d"};
var concat = string.Join(", ", values);

这将导致如下所示:

A B C D

于 2012-07-04T10:40:00.360 回答
1

尝试:

var result = string.Join(",", values.Where(s => !string.IsNullOrEmpty(s)));
于 2012-07-04T10:41:37.177 回答