IT story

문자열 분할, ToList로 변환

hot-time 2020. 5. 27. 07:41
반응형

문자열 분할, ToList로 변환한 줄에 ()


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

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 배열을 사용할 수도 있습니다.

이처럼

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

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

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

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

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

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


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

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(',');

내 문제는 비슷하지만 때로는 문자열에 문자가 포함되어있는 경우가 있습니다 (때로는 비어 있음).

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

Pcode Xonos 확장 방법을 따르려고합니다.

public static List<int> SplitToIntList(this string list, char separator = ',')
{
      int result = 0;
      return (from s in list.Split(',')
              let isint = int.TryParse(s, out result)
              let val = result
              where isint
              select val).ToList(); 
}

새로운 C # 6.0 언어 기능을 사용할 수 있습니다.

  • 델리게이트 (s) => { return Convert.ToInt32(s); }를 해당 메소드 그룹으로 교체Convert.ToInt32
  • 중복 생성자 호출을 대체하십시오 new Converter<string, int>(Convert.ToInt32).Convert.ToInt32

결과는 다음과 같습니다.

var intList = new List<int>(Array.ConvertAll(sNumbers.Split(','), Convert.ToInt32));

이것을 사용할 수 있습니다 :

List<Int32> sNumberslst = sNumbers.Split(',').ConvertIntoIntList();

참고 URL : https://stackoverflow.com/questions/911717/split-string-convert-tolistint-in-one-line

반응형