달나라 노트

Google Apps Script : indexOf (특정 문자의 위치 찾기) 본문

Google Apps Script

Google Apps Script : indexOf (특정 문자의 위치 찾기)

CosmosProject 2022. 12. 1. 19:58
728x90
반응형

 

 

 

String 객체의 indexOf method는 어떠한 문자열에서 특정 텍스트의 위치를 찾아줍니다.

 

 

Syntax

String.indexOf(text, start_index)

 

indexOf method는 String에 적용할 수 있으며 2개의 parameter를 받습니다.

 

- text

String에서 text를 찾아 text가 String의 어느 위치에 존재하는지를 index로 나타내줍니다.

 

 

- start_index

String에서 text를 찾을 때 어느 지점부터 찾을지를 의미합니다.

기본값은 0입니다. (= start_index를 생략할 경우 0으로 간주되어 String의 가장 처음부터 찾기를 시작합니다.)

 

 

 

 

 

 

 

function myFunction(){
  var test_string = 'Apple_Banana_Peach_Melon';

  Logger.log(test_string.indexOf('le'));
  Logger.log(test_string.indexOf('le', 0));
  Logger.log(test_string.indexOf('le', 3));
  Logger.log(test_string.indexOf('abc', 0));
}


-- Result
3.0
3.0
3.0
-1.3

 

- test_string.indexOf('le')

test_string에 indexOf method를 적용합니다.

parameter를 보면 'le' 하나만 있습니다.

따라서 start_index는 기본값 0으로 적용된 것이라고 볼 수 있죠.

 

Apple_Banana_Peach_Melon

test_string에서 le라는 문자를 찾으면 위처럼 Apple의 le가 가장 먼저 찾아지죠.

test_string에서 le가 찾아지는 시작점은 test_string의 index = 3인 지점입니다.

따라서 3이 return됩니다.

 

 

- test_string.indexOf('le', 0)

이번에는 parameter가 2개입니다.

'le'와 0인 것을 보면

le라는 글자를 찾아야 하는 것이고 start_index가 0인 것이죠.

 

Apple_Banana_Peach_Melon

따라서 동일하게 test_string의 가장 첫 글자부터 탐색을 시작하고 그 결과는 3이 됩니다.

 

 

- test_string.indexOf('le', 3)

이번에는 start_index가 3으로 적혀있습니다.

test_string의 index = 3위치는 Apple의 l입니다.

 

le_Banana_Peach_Melon

따라서 index = 3부터 string을 나타내보면 위와 같고 그러면 가장 처음 부분에서 le라는 문자가 찾아집니다.

여기서 한 가지 주의해야할 점은 start_index = 3인 경우 위처럼 le는 가장 처음 위치에서 찾아지기 때문에 index = 0이 return되어야할 것 같기도 합니다.

하지만 start_index의 의미는 단순히 string에서 특정 text를 찾기 시작하는 위치만을 지정해주는 것일 뿐 최종적인 결과는 전체 string 기준으로 계산됩니다.

 

Apple_Banana_Peach_Melon

결국 le는 전체 test_string 기준 index = 3 위치에서 시작되므로 3이 return됩니다.

 

 

- test_string.indexOf('abc', 0)

위 예시는 abc라는 텍스트를 찾아야하는데 abc라는 텍스트는 test_string에서 찾을 수 없습니다.

이렇게 문자가 찾아지지 않는 경우 -1이 return됩니다.

 

 

 

 

 

function myFunction(){
  var test_string = 'Apple_Banana_Peach_Melon';

  Logger.log(test_string.indexOf('a', 0));
}


-- Result
7.0

 

위 예시를 봅시다.

 

- test_string.indexOf('a', 0)

a라는 글자를 찾고있죠.

 

Apple_Banana_Peach_Melon

test_string에서 a를 찾으면 총 5개가 찾아집니다.

근데 결과는 7이 return되었죠.

 

여기서 알 수 있는 점은 두 가지가 있습니다.

 

1. indexOf method는 대소문자를 구분하여 대문자와 소문자를 다른 취급을 한다.

위 예시에서 보면 가장 첫 글자가 A인데 우리는 소문자 a를 찾아야합니다.

만약 대소문자를 동일하게 취급했다면 결과는 0이었어야하지만 7이 return된 것을 보아 같은 알파벳이라도 대문자/소문자는 다르다고 판단합니다.

 

2. indexOf method는 하나의 string에서 여러 개의 문자가 찾아지는 경우 가장 처음 문자의 위치를 return한다.

위 예시에서 a는 총 5개가 찾아집니다.

가장 첫 번째 글자인 대문자 A를 제외하고보면 소문자 a는 총 4개가 찾아지죠.

근데 결과는 index = 7입니다.

 

Apple_Banana_Peach_Melon

따라서 찾아지는 모든 소문자 a 중 가장 앞에있는 Ba의 a 위치(index)가 return된 것임을 알 수 있습니다.

 

 

 

 

 

 

728x90
반응형
Comments