본문 바로가기

Programming/ASP

[ASP] 문자열 함수 정리

출처 : http://heouk.tistory.com/35



문자열 관련 함수
1. UCASE, LCASE 문자열의 내용을 대문자, 소문자로 변환시켜준다.
2. LEN 문자열의 길이를 반환한다.
3. LEFT, RIGHT, MID 문자열의 좌, 우, 중간에서 지정한 만큼의 문자열을 뽑아낸다.
4. INSTR, INSTRREV 해당되는 문자열의 좌측, 우측 위치를 반환한다.
5. LTRIM, RTRIM, TRIM 문자열의 좌측, 우측, 전체의 공백을 제거한다.
6. REPLACE 문자열의 내용중 일부를 다른 문자열로 변경한다.
7. SPLIT 문자열에서 특정 문자열을 기준으로 나누어 배열로 저장한다.

오늘도 여전히 다룰게 많군요. (그래도 재밌는 함수들이 많이 있습니다. ^^)
그러면 이제부터 본격적으로 위에 언급한 함수들의 자세한 내용을 알아보도록 할까요?

1. UCASE, LCASE

UCASELCASE 함수는 각각 문자열을 '대문자', '소문자' 로 변환시켜 주는 함수입니다.
(UCASE 는 'uppercase (대문자)', LCASE 는 'lowercase (소문자)' 의 약자입니다.)
예를 들어 strTest 라는 변수에 "I Love You" 라는 문자열이 있다고 가정해 보겠습니다.

Dim strTest, strUpper, strLower

strTest = "I Love You"
strUpper = UCASE (strTest)
strLower = LCASE (strTest)

이런 경우 strUpper 변수에는 "I LOVE YOU" (대문자로 변환됨) 라는 문자열이,
그리고 strLower 변수에는 "i love you" (소문자로 변환됨) 라는 문자열이 들어가게 됩니다.
어떻습니까? 쉽게 이해를 하실 수 있으시겠지요.

그렇다면 대,소문자로 변환할 수 없는 한글이나 숫자를 입력하는 경우에는 어떻게 될까요?
똑똑한 ASP 는 대,소문자로 변환할 수 없는 경우에는 원본 문자열을 그대로 반환합니다.
즉, UCASE ("사랑해요") 또는 LCASE ("486486") 처럼 변환이 불가능한 문자열을 입력했다면 원본 문자열에 아무런 수정을 가하지 않고 그대로 돌려준다는 의미가 되는 것입니다.

2. LEN

LEN 은 길이를 의미하는 'length' 의 약자로서 '문자열의 길이' 를 반환합니다.
LEN 함수는 한글, 숫자, 영문, 특수 문자를 가리지 않고 한 글자당 1씩 계산하는데요.
주의하셔야 할 점은 '공백' 도 문자로 인식하여, 길이에 포함시킨다는 사실입니다.
예를 들어 strTest 라는 변수에 "I Love You..." 라는 문자열이 들어 있다고 해볼까요?

Dim strTest, intLength

strTest = "I Love You..."
intLength = LEN (strTest)

이 경우 intLength 에는 13이라는 정수형 값이 들어가게 되는 것이지요.
만약 strTest 라는 변수에 아무런 값도 들어있지 않거나, 빈 문자열이라면?
LEN 함수는 이러한 경우에 0 을 반환합니다. 해당 문자열의 길이가 없기 때문이지요.

3. LEFT, RIGHT, MID

LEFT (RIGHT) 함수는 문자열의 왼쪽 (오른쪽) 에서 지정한 길이 만큼의 문자열을 반환하고,
MID 함수는 문자열의 지정한 위치에서, 지정한 길이 만큼의 문자열을 반환합니다.
이 함수들에 대한 설명은 예를 들어 설명드리는 것이 가장 좋을 것 같네요.

Dim strTest, strLeft, strRight, strMid

strTest = "Welcome to Dukyoung.net"
strLeft = LEFT (strTest, 7)
strRight = RIGHT (strTest, 12)
strMid = MID (strTest, 4, 7)

자, 위와 같은 문장을 ASP 에서 실행하면, 각각의 변수에는 어떤 값들이 들어가게 될까요?
우선 strLeft 에는 strTest 의 왼쪽에서 7글자.. "Welcome" 이 들어가게 됩니다.
그리고 strRight 에는 strTest 의 오른쪽에서 12글자.. "Dukyoung.net" 이 들어가지요.
마지막으로 strMid 에는 strTest 의 (왼쪽에서) 4번째 글자인 c 부터의 7글자..
즉, "come to" 라는 문자열이 들어가게 됩니다. (공백도 하나의 문자로 인정합니다.)

사용법이 상당히 간단하지요? 잘 기억해 두시기를 바랍니다.

4. INSTR, INSTRREV

INSTRINSTRREV 함수는 '특정 문자열의 위치' 를 알아내는 함수입니다.
예를 들어서 "내가 그린 기린 그린 그림은 잘 그린 기린 그린 그림이다." 이라는 문장에서
'그린' 이라는 문자가 어디있는지 찾아내려면 다음과 같이 사용하시면 됩니다.

Dim strTest, intTest

strTest = "내가 그린 기린 그린 그림은 잘 그린 기린 그린 그림이다."
intTest = INSTR (strTest, "그린")

이 문장을 실행하고 난 다음 intTest 변수에 들어갈 값은 4가 됩니다.
즉, "그린" 이라는 문자는 strTest 문자열의 4번째 위치에 있다는 뜻이 되는 것이지요.
(만약 "그린" 이라는 문자열이 없다면 intTest 에는 0 이라는 값이 들어가게 됩니다.)
그런데.. INSTR 함수에서는 또 다른 옵션을 줄 수가 있는데요.
그것은 바로 '시작 위치' 를 지정할 수가 있다는 것입니다.
위의 예를 조금 변형하여 다음과 같이 수정을 해보겠습니다.

intTest = INSTR (5, strTest, "그린")

이 함수의 의미는 과연 무엇일까요?
이것은 "그린" 이라는 문자를 찾긴 찾는데.. 5번째 문자 이후부터 찾겠다는 뜻이 됩니다.
즉, 가장 앞에 있는 5 라는 인자는 '시작 위치' 를 나타내는 것이지요.
따라서 이 함수를 실행시킨 후 intTest 의 값은 4가 아닌 10이 됩니다. (두번째 '그린'의 위치)
(사실.. 이 함수에는 가장 마지막 인자로 이진(Binary), 텍스트(Text) 비교에 관련된 인자가
하나 더 있습니다만, 그다지 사용되지 않으므로 설명을 생략하도록 하겠습니다.)

INSTRREV 함수는 INSTR 함수와 사용법이 같은데.. 시작하는 위치가 반대입니다.
즉 INSTR 함수가 문자열의 처음부터 찾는 것에 반해, INSTRREV 함수는 문자열의 끝에서부터 역순으로(거꾸로) 찾는 것이지요.

intTest = INSTRREV (strTest, "그린")

이렇게 하면 intTest 값에는 25라는 숫자가 들어가게 됩니다.
끝에서부터 찾았을 때 가장 먼저 나온 문자열의 위치를 반환하는 것이지요.
이 함수는 '파일의 확장자' 를 알아낼 때에 특히 유용하고, 자주 쓰이는 함수입니다.
(그 내용에 관해서는 나중에 이야기할 기회가 있을 것 같네요. ^^)

INSTRREV 함수 역시 시작 위치를 설정할 수 있는데요..
INSTR 함수와는 다르게 세번째 인자로서 설정합니다. (혼동하지 마시기 바랍니다.)
시작 위치를 설정하면 그 위치부터 역순으로(거꾸로) 검색하게 되는 것이지요.

intTest = INSTRREV (strTest, "그린", 24)

이렇게 사용한 경우 intTest 값에는 19라는 값이 들어가게 됩니다.

5. LTRIM, RTRIM, TRIM

TRIM 이라는 함수는 단어 뜻 그대로 '잘라내는' 함수입니다.
아무거나 잘라내는 것은 아니고, 문자열의 앞뒤에 있는 '공백' 을 잘라내는 함수가 되겠습니다.
마찬가지로 LTRIM좌측의 공백을, RTRIM우측의 공백을 잘라내는 함수입니다.
이 함수들의 예를 들어보면 다음과 같습니다.

Dim strTest, strAll, strLeft, strRight

strTest = "    My Baby Grand    "
strAll = TRIM (strTest)
strLeft = LTRIM (strTest)
strRight = RTRIM (strTest)

strTest 라는 문자열의 앞,뒤로 3칸의 공백 문자가 들어가 있습니다.
그렇다면 TRIM 함수를 실행한 strAll 이라는 변수에는 어떤 값이 들어가게 될까요?
strAll 변수에는 양 옆의 공백이 사라진 "My Baby Grand" 이라는 문자열이 들어가게 됩니다.
마찬가지로 strLeft 에는 좌측의 공백이 사라진 "My Baby Grand???" 문자열이,
strRight 에는 우측의 공백이 사라진 "???MY Baby grand" 문자열이 들어가게 되는 것이지요.

사용자들이 어떤 페이지에서 값을 입력했을 때, 좌우에 공백을 포함하여 입력한 경우
상당히 유용하게 쓰이는 함수가 되겠습니다.

6. REPLACE

문자열 중에서 특정 내용을 다른 내용으로 바꾸려 할 때 REPLACE 함수를 사용합니다.
이 함수의 사용법은 다음과 같습니다.

Dim strBefore, strAfter

strBefore = "I like you.. Do you like me?"
strAfter = REPLACE (strBefore, "like", "love")

이것은 strBefore 이라는 변수에 담긴 "I like you.. Do you like me?" 라는 문자열 중에서
"like" 라는 문자를 찾아서 그것들만 "love" 라는 문자로 바꾸라는 의미가 되겠습니다.
이 함수를 실행하면 strAfter 이라는 변수에는 변경된 문자열인
"I love you.. Do you love me?" 값이 들어가게 되는 것입니다.
(당연한 이야기지만, 해당되는 문자열이 없을 때에는 문자열에 아무런 변화가 없게 됩니다.)

7. SPLIT

마지막으로 알아볼 함수는 SPLIT 함수입니다.
이 함수는 어떤 문자열에서 특정한 문자열 또는 기호를 기준으로 문자열을 분해한 다음,
분해된 문자열들을 배열에 저장하는 함수입니다.

여기서 잠깐!!

자.. 드디어 '배열' 이 나왔습니다.
(배열을 두려워하거나, 잘 안쓰시는 초보 분들이 의외로 많은 것 같더군요..)
지레 겁먹지 마시고, 차근차근하게 한번 이해해 보도록 하겠습니다.

배열은.. '관련있는 변수들의 모임' 이라고 생각하시면 이해가 빠를 것 같습니다.
예를 들어 주소록을 작성하려고 하는데, 사람들의 이름을 저장하기 위하여 이름마다 각각 다른 변수를 선언해서 저장하려 한다면 상당히 불편한 일이 될 것입니다.
예를 들면 다음과 같습니다.

Dim strNameOne, strNameTwo, strNameThree, strNameFour

strNameOne = "김덕영"
strNameTwo = "김태영"
strNameThree = "윤영지"
strNameFour = "장경수"

4명의 이름을 저장하기 위해서 하나하나 각각 변수를 지정하면 위처럼 사용해야 합니다.
이와 같은 경우에 배열을 사용하면 다음과 같이 표현할 수가 있겠습니다.

Dim arrName (3)

arrName (0) = "김덕영"
arrName (1) = "김태영"
arrName (2) = "윤영지"
arrName (3) = "장경수"

배열의 선언 방법은 간단합니다. 일반 변수의 오른쪽에 괄호만 붙여주면 되거든요.
우선 가장 윗 줄에서 arrName (3) 이라는 배열을 선언했습니다.
3이라는 숫자는 '이 배열이 4개의 항목을 가질 것이다' 라는 것을 알려주는 것입니다.

(자, 여기서 질문이 들어올 것 같군요. '4개의 항목인데 3이라니.. 오타지?' 라고 말이지요.
이것은 오타가 아닙니다. 우리는 숫자를 셀 때 1부터 세는 것을 당연스럽게 여기지만,
배열에서는 1이 아닌 0을 기준으로 합니다. 때문에 배열 요소의 개수는 언제나 괄호안의 숫자에 1을 더한 크기가 되는 것이지요.)

이렇게 배열이 선언되었다면, 위의 예에서 보듯이 숫자 (인덱스 번호)를 이용해
각각의 항목에 값을 저장할 수가 있습니다.

그렇다면 역으로.. 배열의 괄호 안에 들어가는 '인덱스 번호' 만 알고 있다면
아주 간단하게 그 '인덱스 번호' 에 해당하는 값을 알아낼 수가 있습니다.

배열에 대한 더 자세한 설명은 다음 기회에 보충하도록 하겠습니다.

SPLIT 의 사용 예를 들어보면 다음과 같습니다.

Dim arrName, strTest

strTest = "김덕영,김태영,윤영지,장경수"
arrName = SPLIT (strTest, ",")

strTest 라는 문자열에서는 쉼표(,) 를 기준으로 사람들의 이름을 구분하고 있습니다.
그래서 SPLIT 함수를 사용할 때 쉼표를 구분자로 사용하여 문자열을 분해했습니다.

이렇게 SPLIT 함수를 사용하고 난 후에 arrName 이라는 변수에는 배열이 저장되게 됩니다.
쉼표(,)를 기준으로 구분했을 때 가장 먼저 구분된 값은 "김덕영" 이 될테고요.
이 값은 배열의 가장 첫번째인 arrName (0) 에 저장되게 됩니다.
(배열에서 맨 처음은 1이 아닌 0이라는 사실을.. 반드시 기억하시기 바랍니다.)
마찬가지로 다음으로 구분된 값인 "김태영" 은 arrName (1) 에 저장되고,
이런 식으로 arrName (2) 에는 "윤영지", arrName (3) 에는 "장경수" 가 저장됩니다.

그렇게 저장된 값들은 '인덱스 번호' 를 이용하여 쉽게 접근할 수가 있습니다.
3번째로 구분된 값을 알고 싶다면 arrName (2) 라고 하면 되는 것이지요.
(위에서 말씀드렸지만 배열은 1이 아닌 0부터 시작하기 때문에 arrName (2) 가 됩니다.)

주의하실 점은, 범위를 초과하는 '인덱스 번호' 로 접근 하면 오류가 발생된다는 점입니다.
위의 예에서는 arrName (3) 까지만 값이 저장되었는데, 만약 arrName (4) 처럼
범위를 넘어선 '인덱스 번호' 로 접근하려 하면 오류가 발생된다는 뜻이지요.


자, 이것으로 '문자열 관련 함수' 에 관한 강좌를 마치도록 하겠습니다.
오늘의 강좌에서는 문자열을 다루는 대표적인 함수들에 대해서 알아보았습니다.
오늘 배운 함수들은 비교적 사용이 간편하고, 이해 하기가 비교적 쉬운 함수들인데요.
하지만 사용 빈도가 상당히 높아.. 앞으로 ASP 를 공부하면서 지겹도록 만나게 될 것 같습니다.

혹시나 지금 당장은 잘 이해가 가지 않는다고 하더라도,
이런 함수들이 있었다는 것 정도는 기억을 해 두시는 것이 좋겠습니다.
그래야 나중에 기능들을 필요로 할 때, 당황하지 않고 찾을 수가 있을테니까요. ^^