2010-03-03 8 views
7

Gibt es eine Möglichkeit zum Konvertieren von String-Arrays in int-Arrays so einfach wie das Analysieren eines Strings zu einem int in C#.C# string [] to int []

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

Ich habe versucht, Erweiterungsmethoden für die Int-Klasse zu verwenden, um diese Funktionalität selbst hinzuzufügen, aber sie werden nicht statisch.

Irgendeine Idee, wie man das schnell und schön macht?

+1

LINQ erlauben sollten Sie dies zu tun in eine einzelne Zeile. Oder Lambda-Ausdrücke. –

+2

Haben Sie versucht, diese Seite zu durchsuchen, bevor Sie danach gefragt haben? –

Antwort

17

sollte diese Linq-Abfrage es tun:

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

sollte gut tun. Sie können das Lambda ändern, um TryParse zu verwenden, wenn Sie keine Ausnahmen wünschen.

+1

'Array.ConvertAll' erfordert definitiv weniger Reallocations als LINQy' ToArray() '. Beachten Sie, dass Sie in diesem Fall nicht einmal ein Lambda benötigen, sondern "Int32.Parse" als zweiten Parameter von "ConvertAll" übergeben können. –

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

verwenden:

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

Ich denke, wie folgt aus:

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

Hier ist die Extension-Methode ist. Dies geschieht in einer Zeichenfolge, da Sie einer Zeichenfolge keine statische Funktion hinzufügen können.

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

Hier ist, wie Sie es verwenden

string testValue = "123, 456,789"; 

int[] testArray = testValue.ToIntArray(); 

Dies setzt voraus, Sie teilen auf möchten ‚‘ wenn nicht, dann müssen Sie die ToIntArray ändern

+2

Sehr fantastisch, genau das, was ich gesucht habe. Vielen Dank! –