알아두면 편리한 문자처리 함수들 [3]

5. STRLEN
문자열의 길이를 알려주는 함수입니다. 공백도 포함됩니다. 따라서 다음과 같은 문자열의 길이는 8로 출력됩니다.

 

6. STRPOS

문자열내에서 특정 문자의 위치를 알려주는 함수입니다. IDL에서는 항상 그렇듯이, 위치를 나타내는 인덱스는 0부터 시작합니다. 다음 예문을 봅시다.


여기서는 ‘Communication Breakdown’이라는 문자열에서 ‘cat’이라는 문자를 찾고 그 위치를 알아본 것인데, 위치 인덱스는 7로 나옵니다. 즉 첫 글자인 ‘C’부터 시작하여 8번째 위치(인덱스가 7이므로)에서 ‘cat’이라는 문자가 위치함을 알 수 있습니다. 대소문자의 구분이 있음을 유의해야 합니다. 이번에는 알파벳 ‘o’의 위치를 찾아봤는데, 그 결과는 다음과 같습니다.


즉, 두번째 위치에 ‘o’가 있다는 의미입니다. 맞습니다. 그런데 ‘o’가 하나만 있지는 않습니다. 하지만 기본적으로 STRPOS 함수는 문자열의 맨앞부터 찾기 시작하여 가장 먼저 등장하는 위치를 알려주고 끝납니다. 물론 탐색을 맨앞이 아닌 맨뒤부터 시작하도록 할 수도 있습니다. 다음과 같이 REVERSE_SEARCH라는 키워드를 사용하면 됩니다.


그러면 이와 같이 21번째 위치에 있는 ‘o’를 찾게 됩니다. 그러면 여기서 한가지 의문은 남습니다. 문자열내에서 ‘o’는 실제로 세 개인데, 맨앞과 맨뒤의 것은 이렇게 위치를 찾을 수 있지만 가운데에 있는 ‘o’의 위치는 어떻게 찾아야 할까요? 이 경우에는 탐색의 시작 위치를 인위적으로 조정해야 합니다. 다음과 같은 방식으로 가능합니다.


즉, 이와 같이 STRPOS 함수의 세번째 인자를 설정하는 것인데, 이는 탐색을 맨앞부터가 아니라 6번째 위치(인덱스가 5이므로)부터 시작하라는 의미입니다. 물론 결과로 얻어지는 11이라는 인덱스 자체의 기준은 맨앞이긴 합니다. 약간 혼동될 여지가 있으므로 유의할 필요가 있습니다. 어쨌든 이와 같은 목적으로 편리하게 사용될 수 있는 함수가 STRPOS입니다. 다만 문자열내에서 찾고자 하는 문자가 곳곳에서 여러번 등장하고 이들의 위치를 다 찾고자 한다면, STRPOS는 그리 좋은 선택이 아닐 수 있습니다. 이와 같은 경우에는 차라리STRMATCH라는 함수를 사용하는 것이 더 효율적입니다. 이 함수에 대해서는 다음 회 게시물에서 소개하도록 하겠습니다.