JavaScript - 문자열에서 특정 문자 위치 찾기 (indexOf, lastIndexOf)

자바스크립트에서 indexOf(), lastIndexOf()를 이용하면 문자열의 어떤 문자 또는 문자열이 어디에 있는지 위치 정보(Index)를 가져올 수 있습니다. 예제와 함께 자세히 함수 사용 방법을 알아보겠습니다.

1. indexOf() : 문자열의 위치 찾기

indexOf(String)는 문자열에서 인자로 전달된 문자열이 있는지 찾고, 그 문자열 위치에 해당하는 Index를 리턴합니다. 만약 찾는 문자열이 없으면 -1을 리턴합니다. 주의할 점은, 대소문자를 구분하여 비교합니다. 그리고 문자열의 왼쪽에서 오른쪽 방향으로 탐색하며, 가장 먼저 찾아진 문자열의 Index를 리턴합니다.

const str = 'Hello, World, Javascript';

console.log('1: ' + str.indexOf('Hello'));
console.log('2: ' + str.indexOf('hello'));
console.log('3: ' + str.indexOf(','));
console.log('4: ' + str.indexOf('World'));
console.log('5: ' + str.indexOf('Java'));

Output:

1: 0
2: -1
3: 5
4: 7
5: 14

단순히 찾는 문자열이 있는지만 확인하는 것이라면 indexOf()보다는 includes()가 가독성이 좋습니다.

indexOf(searchString, position) : 특정 index 부터 문자열 찾기

indexOf(searchString)는 문자열의 Index 0부터 인자로 전달된 searchString을 찾고 Index를 리턴합니다. 문자열 처음이 아닌, 특정 Index부터 찾으려면 인자로 찾기 시작할 Index를 전달하면 됩니다.

아래 예제는 문자열의 앞에서 첫번째, 두번째, 세번째 comma의 Index를 찾는 예제입니다.

const str = 'Hello, World, Javascript,';

let idx = str.indexOf(',');
console.log('1: ' + idx);

idx = str.indexOf(',', idx + 1);
console.log('2: ' + str.indexOf(',', idx));

idx = str.indexOf(',', idx + 1);
console.log('3: ' + str.indexOf(',', idx));

Output:

1: 5
2: 12
3: 24

2. lastIndexOf() : 뒤에서 앞쪽 방향으로 문자열 위치 찾기

indexOf()는 문자열의 왼쪽에서 오른쪽 방향으로 문자열을 찾습니다. 동일한 문자열이 있어도, 가장 먼저 찾은 문자열의 Index를 리턴합니다. 해당하는 문자열이 없다면 -1을 리턴합니다.

lastIndexOf()는 문자열의 뒤에서 앞쪽 방향으로 문자열을 찾고, Index를 리턴합니다. 가장 마지막에 찾은 문자열의 Index가 필요하다면 lastIndexOf()를 사용하시면 됩니다.

const str = 'Hello, World, Javascript';

console.log('1: ' + str.indexOf('World'));
console.log('2: ' + str.lastIndexOf('World'));
console.log('3: ' + str.indexOf(','));
console.log('4: ' + str.lastIndexOf(','));

Output:

1: 7
2: 7
3: 5
4: 12

lastIndexOf(searchString, position) : 특정 index 부터 문자열 찾기

lastIndexOf(searchString)는 문자열의 마지막 Index부터 인자로 전달된 searchString을 찾고 Index를 리턴합니다. 문자열 처음이 아닌, 특정 Index부터 찾으려면 인자로 찾기 시작할 Index를 전달하면 됩니다.

아래 예제는 문자열의 뒤에서 첫번째, 두번째, 세번째 comma의 Index를 찾는 예제입니다.

const str = 'Hello, World, Javascript,';

let idx = str.lastIndexOf(',');
console.log('1: ' + idx);

idx = str.lastIndexOf(',', idx - 1);
console.log('2: ' + str.lastIndexOf(',', idx));

idx = str.lastIndexOf(',', idx - 1);
console.log('3: ' + str.lastIndexOf(',', idx));

Output:

1: 24
2: 12
3: 5
Loading script...
codechachaCopyright ©2019 codechacha