[C#] 문자열 분할, 한 줄로 ToList <int> () 변환

숫자가있는 문자열이 있습니다.

string sNumbers = "1,2,3,4,5";

분할해서 변환 할 수 있습니다 List<int>

sNumbers.Split( new[] { ',' } ).ToList<int>();

문자열 배열을 정수 목록으로 변환하는 방법은 무엇입니까? 변환 할 수 string[]있도록IEnumerable



답변

var numbers = sNumbers.Split(',').Select(Int32.Parse).ToList();


답변

Linq가 없어도 이런 식으로 할 수 있습니다.

List<int> numbers = new List<int>( Array.ConvertAll(sNumbers.Split(','), int.Parse) );

// Uses Linq
var numbers = Array.ConvertAll(sNumbers.Split(','), int.Parse).ToList();


답변

Joze의 방법은 LINQ ToList()가 필요 하며 System.Linq네임 스페이스에 있습니다.

배열을 List 생성자에 전달하여 Linq없이 Array를 List로 변환 할 수 있습니다.

List<int> numbers = new List<int>( Array.ConvertAll(sNumbers.Split(','), int.Parse) );


답변

int.TryParse예외를 피하기 위해 더 나은 사용 ;

var numbers = sNumbers
            .Split(',')
            .Where(x => int.TryParse(x, out _))
            .Select(int.Parse)
            .ToList();


답변

직접 할당 값을 지정하기 위해 int 배열을 사용할 수도 있습니다.

이처럼

int[] numbers = sNumbers.Split(',').Select(Int32.Parse).ToArray();


답변

또한이 확장 방법을 사용할 수 있습니다

public static List<int> SplitToIntList(this string list, char separator = ',')
{
    return list.Split(separator).Select(Int32.Parse).ToList();
}

용법:

var numberListString = "1, 2, 3, 4";
List<int> numberList = numberListString.SplitToIntList(',');


답변

Unity3d int.Parse에서는 제대로 작동하지 않습니다. 그래서 나는 벨로우즈처럼 사용합니다.

List<int> intList = new List<int>( Array.ConvertAll(sNumbers.Split(','),
 new Converter<string, int>((s)=>{return Convert.ToInt32(s);}) ) );

Unity3d 사용자에게 도움이 되길 바랍니다.