2010-03-03 8 views
7

Dize dizilerini int dizilerine, bir dizgiyi C# içindeki bir dizeye ayrıştırmak kadar kolay bir yolu var mı.C# string [] to int []

int a = int.Parse(”123”); 
int[] a = int.Parse(”123,456”.Split(’,’)); // this don't work. 

Bu işlevsellik eklemek için int sınıfının uzantı yöntemlerini kullanmayı denedim ancak statik olmadılar.

Bu kadar hızlı ve güzel nasıl yapılır?

+1

LINQ sen bunu sağlayacak gerektiğini ToIntArray değiştirmek zorunda o zaman eğer '' kullanmak nasıl tek bir satır. Veya lambda ifadeleri. –

+2

Bu siteyi sormadan önce aramayı denediniz mi? –

cevap

17

Bu linq sorgu yapmalı:

strArray.Select(s => int.Parse(s)).ToArray() 
8
int[] a = Array.ConvertAll("123,456".Split(','), s => Int32.Parse(s)); 

gayet yapmalıyım. İstisnalar istemiyorsanız, lambda'yı TryParse'i kullanarak değiştirebilirsiniz.

+1

'Array.ConvertAll ', LINQy' ToArray() 'yerine kesinlikle daha az yeniden ayırma gerektirir. Bu durumda, bir lambda bile ihtiyacınız olmadığını unutmayın, 'Int32.Parse '' ConvertAll '' in ikinci parametresi olarak geçebilirsiniz. –

3
”123,456”.Split(’,’).Select(s => int.Parse(s)).ToArray(); 
6
int[] a = "123,456".Split(’,’).Select(s => int.Parse(s)).ToArray(); 
3

bunu kullanın:

"123,456".Split(',').Select(s => int.Parse(s)).ToArray() 
3

Ben böyle düşünüyorum:

İşte
string[] sArr = { "1", "2", "3", "4" }; 
int[] res = sArr.Select(s => int.Parse(s)).ToArray(); 
2

uzatma yöntemidir. Bu dizede yapılır, çünkü bir dizeye statik bir işlev ekleyemezsiniz. İşte

public static int[] ToIntArray(this string value) 
{ 
    return value.Split(',') 
     .Select<string, int>(s => int.Parse(s)) 
     .ToArray<int>(); 
} 

üzerinde bölmek istediğiniz

Bu varsayar
string testValue = "123, 456,789"; 

int[] testArray = testValue.ToIntArray(); 

Eğer

+2

Çok müthiş, tam da aradığım şey. Teşekkürler! –