본문 바로가기
  • AI (Artificial Intelligence)
Programming/Java

파싱(Parsing)강좌

by 로샤스 2014. 5. 23.

.파싱(Parsing)이란?

 

 

 

파싱이란 자료를 원하는 형태로 가공하는 방식(?)입니다!


.파싱(Parsing)에 필요한 함수

기본적으로 파싱을 할 때엔 일반적으론 2가지 함수를 이용하는 방식으로 할 수 있습니다.


 

 

 

Split함수와 Mid, Instr함수 입니다.


Mid함수Left, Right함수로 대체 할 수 있습니다.


 

 

 

그럼 파싱하는 방법을 알기 이전에 Split함수Mid, Instr함수의 사용방법을 알고 넘어가 봅시다.


 

 

 

Split 함수는 나누다 란 뜻을 가진 단어인데요,

말 그대로 정해놓은 구분자로 나누는 함수입니다.


 

 

 

Split(문자열, 구분자)(배열) 일반적으로 이런 식으로 사용합니다.

* Split 함수Tip. 읽어보지 않아도 됩니다.

* 또한 무한배열(Ex: Dim ABC() As 형식)로 선언시 아래와 같은 방법으로 사용이 가능합니다.

* ABC = Split(문자열, 구분자)

* Msgbox ABC(배열)

* 이와 같이 사용 하면 변수에 담아두어 계속 함수를 사용하지 않아도 되서 편리합니다.


 

 

 

직접 해보자면 Str변수에 가나다라/세종대왕/루나이런식의 문자열이 있다고 하면, 저는 루나라는 글자를 출력해 보겠습니다.


Dim Str as String


 

 

 

Str = “가나다라/세종대왕/루나


 

 

 

Msgbox Split(Str,"/")(2)

이렇게 되는데요,


 

 

 

풀어보자면,


Split(Str,"/")(2)

첫 번째 인자의 Str는 문자열. , 구분자로 나눌 문자열을 넣는 곳입니다.

저는 가나다라/세종대왕/루나를 나눌 것이기 때문에 Str변수에 가나다라/세종대왕/루나를 넣고 첫 번째 인자에 넣었습니다.


 

 

 

Split(Str,"/")(2)

“/”구분자를 “/”하여 “/”기준으로 나눈다고 한겁니다.


 

 

 

Split(Str,"/")(2)

(2)는 배열을 뜻하는데요, 배열안의 수는 기본적으로 0부터 시작합니다.


  (0)      (1)     (2)

가나다라/세종대왕/루나


이런 식으로 시작되고 끝납니다.



[Mid, Instr] * Mid함수는 Left, Right함수로 대체 할 수 있으나, 본 강좌에서는 Mid함수로만 설명을 하겠습니다.


 

 

 

[Mid]

Mid함수는 Middle, 중앙, 가운데 라는 뜻인데요,


 

 

 

Mid(문자열, 시작, 길이) 이렇게 사용 할 수 있습니다.


 

 

 

직접 해보자면,

Mid("asd.123456.fsdfsd", 5, 6)

 

이렇게 하면 “123456”이 반환됩니다.


 

 

 

"asd.123456.fsdfsd" 라는 문자열에서 5번째 글자, 1”부터 6개의 글자를 잘라옵니다.

그렇게 되면 “123456”라는 글자를 반환하게 되겠죠.


 

 

 

[Instr] // I는 대문자 i(아이) 입니다. //

Instr함수는 흔히 문자열에 해당 문자가 있는지 체크할때도 쓰는 함수입니다.

해당 문자열이 포함되어 있으면 0이 아닌수, 그렇지 않으면 0을 반환하지요.


 

 

 

하지만 Instr함수는 해당 문자가 포함되어 있으면 그 문자가 있는곳 까지의 길이(Len)를 반환하는 역할을 합니다.


 

 

 

Instr(시작지점, 문자열, 찾을 문자)

이렇게 사용 할 수 있습니다.


 

 

 

Instr(1, "abcdef.ghijk", ".")

 

이렇게 하면 “.”이 있는 곳의 길이인 “7”을 반환 합니다.

물론 시작지점을 “8” 이상으로 하면 반환값이 “0”이겠지요


 

 

 

이제 두 개의 함수를 사용하여 파싱을 해볼게요.

 



저는 코끼리 바보 멍청이!”라는 문자열에서 코끼리바보를 스페이스를 이용하여 한번씩 파싱해보겠어요.


 

Dim Str as String


Str = "코끼리 바보 멍청이!“


Msgbox Mid(Str, 1, instr(1, Str, " ") - 1)


이렇게 하게되면 코끼리가 출력되요!


풀어주자면,


자르기 시작할 위치는 1번째(처음)부터 Instr(1, Str, " ") - 1 까지 즉, “ ”가 있는 4번째의 -13까지 잘라서 출력하게 되는 것입니다.


이것을 응용하여 바보를 출력 할건데요,

아까 그 소스에 조금만 더 추가/수정 할겁니다.


Dim Str as String

Dim Temp as String


Str = "코끼리 바보 멍청이!“


Temp = Mid(Str, InStr(1, Str, " ") + Len(" "))

Temp = Mid(Temp, 1, InStr(1, Temp, " ") - 1)


MsgBox Temp


잘 이해가 안 가시는 분들이 많으실 텐데,

Temp = Mid(Str, InStr(1, Str, " ") + Len(" ")) 부분에서


InStr(1, Str, " ") + Len(" ") 부분을 먼저 풀어보자면,

InStr(1, Str, " ") 반환값은 4입니다. 그리고 Len(" ") 함수의 반환값은 1이죠.

그래서 5(4+1)번째부터 시작하여 끝까지 자릅니다. (길이를 생략시 끝까지 자르게 되요!)


그래서 일단 현재 Temp의 값은 바보 멍청이!” 이지요!

그리고,


Temp = Mid(Temp, 1, InStr(1, Temp, " ") - 1) 를 풀어보자면,


InStr(1, Temp, " ") - 1 에서 InStr(1, Temp, " ") 의 반환값은 “3”입니다.

그리하여,

현재 Temp의 값에서 처음부터 다음의 " " 가 있는 곳의 전 까지 자르게 된겁니다.


그러면 Temp바보가 반환되고, 바보가 출력되는 것을 확인 할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

출처 : http://cafe.naver.com/gogoomas/196672

 

 

 

 

 

 

 

 

 

댓글