Ⅰ.파싱(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번째의 -1인 3까지 잘라서 출력하게 되는 것입니다.
이것을 응용하여 “바보”를 출력 할건데요,
아까 그 소스에 조금만 더 추가/수정 할겁니다.
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
'Programming > Java' 카테고리의 다른 글
Spring에서 Json으로의 입출력 정리 (0) | 2014.09.11 |
---|---|
Jackson Tutorial - 2 (0) | 2014.09.11 |
Jackson Tutorial - 1 (0) | 2014.09.11 |
Jackson How-To: Ignoring Unknown Properties (0) | 2014.09.11 |
JNI사용하기 (여기서는 java + c, 사용툴 : Visual studio) (0) | 2014.02.26 |
댓글