2010-02-11 28 views
20

如果我有一個數組,並執行一個ToString,那麼只是將數組中的數組值放在一個逗號分隔的字符串中,或​​者對數組不可能?Array.ToString()

+13

你試過了,檢查輸出嗎? – 2010-02-11 15:46:24

+0

我其實不知道,但你可以嘗試它... – Ian 2010-02-11 15:46:43

+0

我有一個MyCustomType []不是字符串[] – PositiveGuy 2010-02-11 16:28:44

回答

45

選項1

如果你有string秒的數組,那麼你可以使用String.Join

string[] values = ...; 

string concatenated = string.Join(",", values); 

選項2

如果你處理的數組任何其他類型,並且您使用.NET 3.5或更高版本,則可以使用LINQ:

string concatenated = string.Join(",", 
          values.Select(x => x.ToString()).ToArray()); 
+0

c#夥計的數組。分隔首先。 ;-) – 2010-02-11 15:48:19

+0

@Sky:參數的順序與語言沒有任何關係;) – 2010-02-11 15:48:45

+0

@Adam - 你從來沒有編寫過一個把值放在第一位的lang? – 2010-02-11 15:53:08

12

你當然可以這樣做,但它不是默認行爲。最簡單的方法來做到這一點(從.NET 3.5反正)大概是:

string joined = string.Join(",", array.Select(x => x.ToString()).ToArray()); 

MoreLINQ有一個內置的方法來做到這一點:

string joined = array.ToDelimitedString(); 

或指定分隔明確:

string joined = array.ToDelimitedString(","); 
1

不,數組的ToString將爲您提供對象的類型名稱字符串。改用String.Join方法。

2

它不(如你注意到的)。

對於字符串數組,你可以使用:

string.Join(",", myArray) 

爲其他陣列我想你需要自己編寫它。

+0

如果數組類型的ToString是可以接受的,那麼對於所有的值類型來說,簡單的字符串連接都可以工作。大多數其他類型的曝光也會有一個友好的默認ToString。 – 2010-02-11 15:55:01

+1

String.Join不會自動調用ToString() - 您需要將字符串轉換爲字符串數組以開始,根據我的答案和Adam的。 – 2010-02-11 16:05:19

1

爲了達到這種效果,你應該調用的string.join(字符串,字符串[])

string[] stringArray = new string[] { "a", "b", "c" }; 
string.Join(",", stringArray); 
0

您可以使用string.Concat(Object[] args)。這將調用args中每個對象的ToString()方法。在自定義類,你可以重寫ToString()方法來實現自定義字符串轉換是這樣的:

public class YourClass 
{ 
    private int number; 

    public YourClass(int num) 
    { 
     number = num; 
    } 

    public override string ToString() 
    { 
     return "#" + number; 
    } 
} 

現在您可以連接您的自定義類的實例數組:

YourClass[] yourArray = { new YourClass(1), new YourClass(2), new YourClass(3) }; 
string concatenated = string.Concat(yourArray); 

不幸的是這種方法不添加任何分隔符,但我發現它很優雅。變量concatenated將包含"#1#2#2"

相關問題