2010-08-24 60 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