2013-04-18 25 views
-2

我需要將十進制數組轉換爲字符串數組。如何將decimal []轉換爲string []?我可以使用如何將十進制數組轉換爲C#中的字符串數組?

Array.ConvertAll()

方法來完成這個任務?

+0

你必須創建新的數組finnaly,所以只需遍歷這個數組。 – Guy 2013-04-18 06:02:58

+0

@Guy:那麼Array.ConvertAll會爲你做... – 2013-04-18 06:04:35

+0

嘗試它或閱讀文檔不是一個很大的努力:http://msdn.microsoft.com/pl-pl/library/exc45z53.aspx。無論如何,該方法將工作。 – 2013-04-18 06:05:12

回答

3

當然你可以使用Array.ConvertAll方法。你只需要一個可以用lambda表達式輕鬆完成的對話。

string[] string_array = Array.ConvertAll(decimal_array, x => x.ToString()); 

Array.ConvertAll轉換整個數組。它將一個數組中的所有元素轉換爲另一種類型。

讓我們對它進行編碼;

decimal[] decimal_array = new decimal[] {1.1M, 1.2M, 1.3M, 1.4M }; 
string[] string_array = Array.ConvertAll(decimal_array, x => x.ToString()); 

foreach (var item in string_array) 
{ 
     Console.WriteLine("{0} - {1}", item.GetType(), item); 
} 

輸出將;

System.String - 1.1 
System.String - 1.2 
System.String - 1.3 
System.String - 1.4 

這是DEMO

2

試試這個

decimal[] decArr = new decimal[5]; 
// ... 
string[] strArr = decArr.Select(d => d.ToString("0.00")).ToArray(); 

希望這有助於

12

是的,你可以使用Array.ConvertAll很簡單 - 你只需要提供轉換委託,這是最容易用lambda表達式來完成:

string[] strings = Array.ConvertAll(numbers, x => x.ToString()); 

效率略低,但更具地道性和靈活性,您可以使用LINQ:

string[] strings = numbers.Select(x => x.ToString()).ToArray(); 

或者,如果你實際上並不需要一個數組,並樂意爲它執行字符串轉換每次迭代它時間:

IEnumerable<string> strings = numbers.Select(x => x.ToString()); 

這裏的靈活性是numbers可以換到是任何IEnumerable<decimal> - 因此,如果您更改爲使用List<decimal>,則不需要更改此轉換代碼。

調用ToArray時,效率的輕微損失是調用Select的結果是一個懶惰評估的序列,它不知道它的大小是否以它開始 - 因此它不能立即知道輸出數組的確切大小,而ConvertAll顯然。

+0

爲什麼ConvertAll更高效。我正要問,但只是看到你的編輯 – Habib 2013-04-18 06:08:04

+0

這是如何可能這個問題不被接受? :)這更詳細。 – 2013-04-18 06:31:17

+2

@SonerGönül這可能是一種試圖阻止Jon的I-get-it-all體驗:) – TheBlastOne 2013-04-18 06:36:48

相關問題