2010-08-24 29 views
23

我宁愿是这样的:C#:string []以分隔字符串。是否有单线?

string[] strArray = {"Hi", "how", "are", "you"}; 
string strNew = strArray.Delimit(chDelimiter); 

但是,没有这样的功能。我已经看过了MSDN,并没有看到我作为一个功能,将执行相同的行动。我看着StringBuilder,再一次,没有什么突出给我。有没有人知道一个不是非常复杂的单线程来使数组成为一个分隔字符串。谢谢你们的帮助。

更新:哇,哈哈,我的坏。我一直在看阵列。加入阵列本身,它正在窃听我。我甚至没有看String.Join。多谢你们。一旦它允许我接受我将会。请帮助。

+0

像' String.Join(chDelimiter,array);'您可能必须先将char转换为字符串。还有一个通用版本。我怀疑LINQ可以以优雅的方式做到这一点。 – 2010-08-24 15:44:02

+0

是的,我一直在看错误的加入。谢谢。 – XstreamINsanity 2010-08-24 15:53:31

回答

43

对于数组,你可以使用:

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(", "); 
+0

不错的功能。我的主要目的是我们有一个分隔文件,把它放到一个用SQL Lite作为存储方法进行编辑的程序中,然后他们想将它发送回分隔文件。一旦它让我接受我应该。谢谢。 – XstreamINsanity 2010-08-24 15:50:26

+8

在NET4.0中,有一个'string.Join'重载可以用于任何'IEnumerable'集合,http://msdn.microsoft.com/en-us/library/dd992421.aspx – 2010-08-24 15:55:13

+0

@Danko:很好!当我将应用程序移动到.NET 4时,我肯定会赞成你所建议的方法。谢谢! – kbrimington 2010-08-24 16:07:58

4

使用String.Join

string[] strArray = {"Hi", "how", "are", "you"}; 
string strNew = String.Join("," strArray); 
6

您可以使用静态String.Join方法:

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)); 

希望这会有所帮助!

+0

令我困扰的是,如果某物是一个字符串[],那么当我这样做时,我应该仍然有这个选项。我应该有选择加入数组和选择加入该数组。 :) – XstreamINsanity 2010-08-24 15:54:30

+0

是的,我看到了。我不一定是说我需要它,我说当你有一个字符串[]时,你用.Join(strArray.Join())跟随变量,你不会得到Join(字符串分隔符,字符串[] strArray)选项,你会得到一些其他的连接选项,我认为字符串[]也应该有.Join(string delimiter,string [] strArray)选项,但它会是.Join(string delimiter),因为它已经是一个数组,因为我自己弄糊涂了,所以我把它弄清楚了:) – XstreamINsanity 2010-08-24 17:21:05

5

看一看String.Join()

你的样品必须是这样的:

 string delimiter = "," 
     string[] strArray = { "Hi", "how", "are", "you" }; 
     string strNew = String.Join(delimiter, strArray); 
1
在这种情况下

,的string.join()可能是最容易的方式,你同样可以使用LINQ虽然

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

聚合速度慢得多,因为在幕后不使用StringBuilder(iirc)。 – 2010-08-24 16:02:19