파싱해온 문자열에 double형 값이 4개가 들어있는데
콤마로 이루어진 문자열에서 각각의 숫자를 꺼내보고 싶어 찾아본 방법
※콤마 뿐 아니라 공백, 특정 단어를 사용하여 파싱하는 방법도 함께 기록해봄
C# 문자열 파싱
과정
1. 특정 문자를 이용한 문자열 자르기
2. 배열에 잘라둔 문자열 넣기
3. 필요한 위치의 문자 형변환
아래 예시코드는 공백을 기준으로 숫자(처럼 보이지만 문자열임)를 잘라낼수있다
string textBuff = "-1.123 4.234 34.12 126.4 99 22";
double[] result = textBuff
.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
.Select(s => double.Parse(s))
.ToArray();
double x = result[0];
// ...
double k = result[5];
람다 함수가 낯설다면 아래의 방법을 사용하자
근데 람다를 이용한 방법이 메모리 효율을 엄청 늘려준다고 하니
람다를 익혀서 위의 방식을 사용하는게 훨씬 이득일듯
string textBuff = "-1.123 4.234 34.12 126.4 99 22";
string[] result = textBuff.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
double x = double.Parse(result[0]);
// ...
double k = double.Parse(result[5]);
만약 파싱하려는 문자열이 콤마 , (comma) 를 기준으로 나열되어 있다면
Split 함수의 ' ' 부분을 ','로 바꾸어 사용하면 된다
나의 경우는 마진 값을 string으로 받아져서 콤마를 기준으로 Top 값을 갖고오기 위해 문자열을 잘라보았다
Marin은 left, top, right, bottom 이므로
여기서 내가 추출해야할 Top은 2번째 값이라 MarginResult[1] 값을 형변환 해주면 끝
//Margin = (10,50,0,100)
string MarginStr = Margin.ToString();
string[] MarginResult = MarginStr.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
문자열에서 가져온 숫자를 int형으로 바꾸어 사용하고 싶다면
//double x = double.Parse(result[0]);
int x = int.Parse(result[0]);
위의 형태로 선언하면 된다
참고 :
문자열 파싱
https://stackoverflow.com/questions/1406129/parse-multiple-doubles-from-string-in-c-sharp
들여쓰기(tab 키) 기준 파싱
https://stackoverflow.com/questions/12384905/string-split-function-in-c-sharp-tab-delimiter
'C#' 카테고리의 다른 글
[WPF] 새로운 인터넷 브라우저 WebView2 사용 기초 예제 (feat. C#) (0) | 2022.12.12 |
---|---|
[Windows] 배치파일, cmd에서 한글 깨질 때, 인코딩 하는법 (0) | 2022.12.07 |
[C#] 윈도우에 설치된 폰트 목록 가져오는법 (feat.폰트 저장 위치) (0) | 2021.12.06 |
[C#] 현재 .NET SDK에서는 .NET 6.0을(를) 대상으로 하는 것을 지원하지 않습니다. 해결법 (0) | 2021.11.23 |
[C#] .net sdk 설치 유무 및 버전 확인 하는법 (2) | 2021.11.23 |
[C#] 값 형식 참조 형식 변수, 정리 기초 (0) | 2021.10.24 |