반응형
LINQ를 사용하여 문자열[]을 코드 한 줄에서 int[]로 변환
문자열 형식의 정수 배열이 있습니다.
var arr = new string[] { "1", "2", "3", "4" };
더 나아가려면 '실제' 정수 배열이 필요합니다.
void Foo(int[] arr) { .. }
저는 그것을 캐스팅하려고 노력했지만 물론 실패했습니다.
Foo(arr.Cast<int>.ToArray());
다음에 할 수 있습니다.
var list = new List<int>(arr.Length);
arr.ForEach(i => list.Add(Int32.Parse(i))); // maybe Convert.ToInt32() is better?
Foo(list.ToArray());
또는
var list = new List<int>(arr.Length);
arr.ForEach(i =>
{
int j;
if (Int32.TryParse(i, out j)) // TryParse is faster, yeah
{
list.Add(j);
}
}
Foo(list.ToArray());
둘 다 못생겼어요
그 일을 완료할 다른 방법이 있습니까?
배열이 지정된 경우 다음 방법을 사용할 수 있습니다.
int[] myInts = Array.ConvertAll(arr, s => int.Parse(s));
람다를 생략할 수 있다는 점을 지적해 준 Marc Gravell 덕분에 아래와 같이 더 짧은 버전이 생성됩니다.
int[] myInts = Array.ConvertAll(arr, int.Parse);
LINQ 솔루션은 추가로 필요하다는 점을 제외하고는 유사합니다.ToArray배열을 가져오려면 호출:
int[] myInts = arr.Select(int.Parse).ToArray();
편집: 배열로 변환합니다.
int[] asIntegers = arr.Select(s => int.Parse(s)).ToArray();
이렇게 하면 효과가 있습니다.
var asIntegers = arr.Select(s => int.Parse(s));
에서 예외를 방지하려면.Parse여기 몇 개 있습니다.TryParse대안들
구문 분석할 수 있는 요소만 사용하려면:
string[] arr = { null, " ", " 1 ", " 002 ", "3.0" };
int i = 0;
var a = (from s in arr where int.TryParse(s, out i) select i).ToArray(); // a = { 1, 2 }
또는
var a = arr.SelectMany(s => int.TryParse(s, out i) ? new[] { i } : new int[0]).ToArray();
다음을 사용한 대안0구문 분석할 수 없는 요소의 경우:
int i;
var a = Array.ConvertAll(arr, s => int.TryParse(s, out i) ? i : 0); //a = { 0, 0, 1, 2, 0 }
또는
var a = arr.Select((s, i) => int.TryParse(s, out i) ? i : 0).ToArray();
var a = Array.ConvertAll(arr, s => int.TryParse(s, out var i) ? i : 0);
다음을 통해 문자열 배열을 int 배열로 간단히 캐스팅할 수 있습니다.
var converted = arr.Select(int.Parse)
var asIntegers = arr.Select(s => int.Parse(s)).ToArray();
당신이 그것을 받지 않는지 확인해야 합니다.IEnumerable<int>답례로
var list = arr.Select(i => Int32.Parse(i));
언급URL : https://stackoverflow.com/questions/1297231/convert-string-to-int-in-one-line-of-code-using-linq
반응형
'codememo' 카테고리의 다른 글
| RxJs 5에서 Angular Http 네트워크 호출의 결과를 공유하는 올바른 방법은 무엇입니까? (0) | 2023.05.18 |
|---|---|
| 컨트롤러에서 필터를 사용하는 방법은 무엇입니까? (0) | 2023.05.18 |
| X-Frame-옵션 여러 도메인에서 허용 (0) | 2023.05.18 |
| 호스트 대 Dnsafe 호스트 (0) | 2023.05.13 |
| 를 사용하여 Windows에서 팝업 "토스터" 알림을 만듭니다.그물 (0) | 2023.05.13 |