2010-03-03 5 views
7

문자열 배열을 int 배열로 변환하는 방법은 C#에서 문자열을 int로 구문 분석하는 것처럼 쉽습니다.C# 문자열 [] to int []

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

int 클래스의 확장 메서드를 사용하여 직접이 기능을 추가하려고했지만 정적이 아닙니다.

어떻게하면 좋을까요?

+1

LINQ는 당신이이 작업을 수행 할 수 있도록 마땅 ToIntArray을 변경해야 다음없는 경우 ','를 사용하는 방법입니다 한 줄. 또는 람다 식. –

+2

요청하기 전에이 사이트를 검색하려고 시도 했습니까? –

답변

17

이 LINQ 쿼리를 수행해야합니다

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

는 잘해야한다. 예외를 원하지 않으면 TryParse를 사용하도록 람다를 수정할 수 있습니다.

+1

'Array.ConvertAll'은 LINQy'ToArray()'보다 적은 재 할당을 필요로합니다. 이 경우 람다도 필요 없다.'ConvertAll'의 두 번째 매개 변수로'Int32.Parse'를 전달할 수 있습니다. –

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

사용이 :

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

나는 그렇게 생각 :

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

이 확장 방법이다. 이것은 문자열에 정적 함수를 추가 할 수 없기 때문에 문자열에서 수행됩니다. 여기

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

는에 분할 할

이 가정
string testValue = "123, 456,789"; 

int[] testArray = testValue.ToIntArray(); 

당신이

+2

정말 대단 했어. 내가 찾고 있던 바로 그거야. 감사! –