C#:字符串[]到带分隔符的字符串。有一艘班轮吗?

C#:字符串[]到带分隔符的字符串。有一艘班轮吗?,c#,string,delimited-text,arrays,C#,String,Delimited Text,Arrays,我更喜欢的是: string[] strArray = {"Hi", "how", "are", "you"}; string strNew = strArray.Delimit(chDelimiter); 但是,没有这样的功能。我查看了MSDN,没有任何函数可以执行相同的操作。我看了看StringBuilder,又一次,什么也看不出来。有没有人知道一个不太复杂的单行程序可以使数组成为带分隔符的字符串。谢谢你们的帮助 更新:哇,哈哈,我的坏。我一直在看。加入阵列本身,它把我烦透了。我甚至没看S

我更喜欢的是:

string[] strArray = {"Hi", "how", "are", "you"};
string strNew = strArray.Delimit(chDelimiter);
但是,没有这样的功能。我查看了MSDN,没有任何函数可以执行相同的操作。我看了看StringBuilder,又一次,什么也看不出来。有没有人知道一个不太复杂的单行程序可以使数组成为带分隔符的字符串。谢谢你们的帮助


更新:哇,哈哈,我的坏。我一直在看。加入阵列本身,它把我烦透了。我甚至没看String.Join。谢谢各位。一旦它允许我接受,我就会接受。请参阅帮助。

对于阵列,您可以使用:

string.Join(", ", strArray);
就我个人而言,我使用了一种扩展方法,可以应用于所有类型的可枚举集合:

public static string Flatten(this IEnumerable elems, string separator)
{
    if (elems == null)
    {
        return null;
    }

    StringBuilder sb = new StringBuilder();
    foreach (object elem in elems)
    {
        if (sb.Length > 0)
        {
            sb.Append(separator);
        }

        sb.Append(elem);
    }

    return sb.ToString();
}
…我是这样使用的:

strArray.Flatten(", ");
使用

您可以使用静态方法:

String strNew=String.Join(chDelimiter,strArray)


编辑:回应评论: 根据您的评论,您可以获取多个数组,将它们连接在一起,然后连接整个结果数组。您可以使用IEnumerable扩展方法
Concat
来实现这一点。下面是一个例子:

//define my two arrays...
string[] strArray = { "Hi", "how", "are", "you" };
string[] strArray2 = { "Hola", "como", "esta", "usted" };

//Concatenate the two arrays together (forming a third array) and then call join on it...
string strNew = String.Join(",", strArray.Concat(strArray2));
希望这有帮助

看一看

您的样本必须如下所示:

        string delimiter = ","
        string[] strArray = { "Hi", "how", "are", "you" };
        string strNew = String.Join(delimiter, strArray);
在这种情况下,String.Join()可能是最简单的方法,但您也可以使用LINQ

var comSeparatedStrings = strings.Aggregate((acc, item) => acc + ", " + item);

类似于
String.Join(chDelimiter,array)您可能必须首先将字符转换为字符串。还有一个通用版本。我怀疑LINQ也能以优雅的方式做到这一点。是的,我一直在寻找错误的连接。谢谢,功能不错。我的主要目的是我们有一个带分隔符的文件,把它放进一个程序中,用SQLLite作为存储方法进行编辑,然后他们想把它发送回一个带分隔符的文件。一旦它让我接受,我就会接受。谢谢。在NET4.0中,有一个
字符串。Join
重载可以用于任何
IEnumerable
集合,@Danko:Nice!当我将我的应用程序迁移到.NET4时,我肯定会支持您建议的方法。谢谢这种方法还允许您附加一个带有额外参数的行分隔符;.Join方法需要一个额外的concat来实现关于
string.Join
vs
strArray.Flatten
?困扰我的是,如果某个东西是字符串[],那么当我执行.Join时,我应该仍然可以使用该选项。我应该可以选择加入数组,也可以选择加入该数组。:)是的,我看到了。我的意思不一定是我需要它,我是说当你有一个字符串[]并且你在变量后面加上.Join(string delimiter,string[]strArray())时,你不会得到Join(string delimiter,string[]strArray)选项,你会得到一些其他的Join选项。我认为字符串[]也应该有.Join(string delimiter,string[]strArray)选项,但它将是.Join(字符串分隔符),因为它已经是一个数组。我是否清楚地说明了这一点,因为我自己感到困惑。:)不过聚合速度要慢得多,因为没有在后台使用StringBuilder(iirc)。
var comSeparatedStrings = strings.Aggregate((acc, item) => acc + ", " + item);