반응형
LINQ를 사용하여 문자열을 정수 배열로 변환
이 질문에 이미 답변이 있습니다.
문자열을 정수 배열로 변환하는 함수 (tointarray)가 있지만 그다지 만족스럽지 않습니다. 작업을 수행하지만이를 수행하는 더 우아한 방법이 있어야하며 LINQ 가 여기서 도움이 될 수 있습니다. 불행히도 나는 LINQ를 잘하지 못합니다. 더 좋은 방법이 있습니까?
내 기능 :
{
string s1 = "1;2;3;4;5;6;7;8;9;10;11;12";
int[] ia = tointarray(s1, ';');
}
int[] tointarray(string value, char sep)
{
string[] sa = value.Split(sep);
int[] ia = new int[sa.Length];
for (int i = 0; i < ia.Length; ++i)
{
int j;
string s = sa[i];
if (int.TryParse(s, out j))
{
ia[i] = j;
}
}
return ia;
}
이 게시물은 비슷한 질문을하고 LINQ를 사용하여 해결했습니다. 아마도 도움이 될 것입니다.
string s1 = "1;2;3;4;5;6;7;8;9;10;11;12";
int[] ia = s1.Split(';').Select(n => Convert.ToInt32(n)).ToArray();
대신 메소드 그룹을 사용하여 JSprangs 솔루션을 약간 줄일 수 있습니다.
string s1 = "1;2;3;4;5;6;7;8;9;10;11;12";
int[] ints = s1.Split(';').Select(int.Parse).ToArray();
s1.Split(';').Select(s => Convert.ToInt32(s)).ToArray();
테스트되지 않고 내 머리 꼭대기에서 ... 올바른 구문을 지금 테스트하고 있습니다.
테스트를 거쳐 모든 것이 좋아 보입니다.
실제로 올바른 일대일 구현은 다음과 같습니다.
int n;
int[] ia = s1.Split(';').Select(s => int.TryParse(s, out n) ? n : 0).ToArray();
다음은 잘못된 필드를 필터링하는 코드입니다.
var ints = from field in s1.Split(';').Where((x) => { int dummy; return Int32.TryParse(x, out dummy); })
select Int32.Parse(field);
public static int[] ConvertArray(string[] arrayToConvert)
{
int[] resultingArray = new int[arrayToConvert.Length];
int itemValue;
resultingArray = Array.ConvertAll<string, int>
(
arrayToConvert,
delegate(string intParameter)
{
int.TryParse(intParameter, out itemValue);
return itemValue;
}
);
return resultingArray;
}
참고:
http://codepolice.net/convert-string-array-to-int-array-and-vice-versa-in-c/
참고 URL : https://stackoverflow.com/questions/2959161/convert-string-to-int-array-using-linq
반응형
'programing tip' 카테고리의 다른 글
Pages # home의 Rails ExecJS :: ProgramError? (0) | 2020.11.06 |
---|---|
Xcode 전체 스택 추적 (0) | 2020.11.06 |
Python : 들여 쓰기에 4 개의 공백을 사용합니다. (0) | 2020.11.06 |
iOS-Xcode 9에서 정의로 이동하기위한 바로 가기? (0) | 2020.11.06 |
작업 복사본 잠김 (0) | 2020.11.06 |