반응형

 

 

 

파싱해온 문자열에 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

 

Parse multiple doubles from string in C#

I have a string that contains a known number of double values. What's the cleanest way (via C#) to parse the string and plug the results into matching scalar variables. Basically, I want to do the

stackoverflow.com

 

들여쓰기(tab 키) 기준 파싱

https://stackoverflow.com/questions/12384905/string-split-function-in-c-sharp-tab-delimiter

 

string.Split function in c# tab delimiter

I have a function which reads a delimited file. The delimiter is passed to the function by string argument. The problem is, when I pass the "\t" delimiter, it ends up like "\\t" and therefore, Sp...

stackoverflow.com

 

 

반응형

+ Recent posts