indexOf()
메서드는 호출한 String
객체에서 특정 값의 첫 번째 일치하는 인덱스를 반환합니다. 일치하는 값이 없으면 -1을 반환합니다.
문법
str.indexOf(searchValue[, fromIndex]
)
파라미터들
searchValue
- 찾고자 하는 문자열을 나타냅니다.
fromIndex
Optional- 문자열에서 찾기 시작하는 위치를 나타내는 인덱스 값입니다. 어떤 정수값이라도 가능합니다. 기본값은 0이며, 문자열 전체를 대상으로 찾게 됩니다. 만약
fromIndex
값이 음의 정수이면 전체 문자열을 찾게 됩니다. 만약fromIndex >= str.length
이면, 검색하지 않고 바로 -1을 반환합니다.searchValue
가 공백 문자열이 아니라면,str.length
를 반환합니다.
설명
문자열 내에 있는 문자들은 왼쪽에서 오른쪽 방향으로 순번이 매겨집니다. 제일 처음 문자는 0번째 순번(index)이며, stringName
문자열의 마지막 문자의 순번 stringName.length -1
입니다.
'Blue Whale'.indexOf('Blue'); // returns 0 'Blue Whale'.indexOf('Blute'); // returns -1 'Blue Whale'.indexOf('Whale', 0); // returns 5 'Blue Whale'.indexOf('Whale', 5); // returns 5 'Blue Whale'.indexOf('', 9); // returns 9 'Blue Whale'.indexOf('', 10); // returns 10 'Blue Whale'.indexOf('', 11); // 전체 문자열의 길이가 10이므로, 10을 반환
대소문자 구분
indexOf()
메서드는 대소문자를 구분합니다. 예를 들면, 아래 예제는 일치하는 문자열이 없으므로 -1
을 반환합니다:
'Blue Whale'.indexOf('blue'); // returns -1
철자 확인하기(Checking occurrences)
'0'이라는 값이 true
를 의미하지 않고, -1이 false
를 의미하지 않습니다. 따라서, 임의의 문자열에 특정 문자열이 있는지를 확인하기 위해서는 아래 예제와 같은 방법으로 확인하시기 바랍니다:
'Blue Whale'.indexOf('Blue') !== -1; // indexOf 메서드는 0을 반환하므로 결과값은 true 'Blue Whale'.indexOf('Bloe') !== -1; // indexOf 메서드는 -1을 반환하므로 결과값은 false
예제
indexOf()
와 lastIndexOf()
사용하기
아래 예제는 "Brave new world"
문자열의 위치를 확인하기 위해 indexOf()
와 lastIndexOf()
를 사용하고 있습니다.
var anyString = 'Brave new world'; console.log('The index of the first w from the beginning is ' + anyString.indexOf('w')); // 첫번째 w 문자 위치는 8 console.log('The index of the first w from the end is ' + anyString.lastIndexOf('w')); // 마지막 w 문자 위치는 10 console.log('The index of "new" from the beginning is ' + anyString.indexOf('new')); // 첫번째 new 문자열 위치는 6 console.log('The index of "new" from the end is ' + anyString.lastIndexOf('new')); // 마지막 new 문자열 위치는 6
indexOf()
와 대소문자 구분
아래 예제에서는 2개의 문자열 변수를 정의하고 있습니다. 이 변수들 내에 있는 문자열들은 모두 같지만 두 번째 변수에 포함되어 있는 문자열은 대문자를 포함하고 있습니다. 첫 번째 console.log()
메서드의 결과값은 19입니다. 하지만, 두 번째 console.log()
메서드의 결과값은 -1
입니다. 왜냐하면, indexOf() 메서드는 대소문자를 구분하기 때문에 myCapString
에서 "cheddar
" 문자열을 찾을 수 없기 때문입니다.
var myString = 'brie, pepper jack, cheddar'; var myCapString = 'Brie, Pepper Jack, Cheddar'; console.log('myString.indexOf("cheddar") is ' + myString.indexOf('cheddar')); // 로그에 19를 출력합니다. console.log('myCapString.indexOf("cheddar") is ' + myCapString.indexOf('cheddar')); // 로그에 -1을 출력합니다.
indexOf()
를 사용하여 문자열 내의 특정 문자 숫자 세기
아래 예제는 str
문자열에서 e
문자의 총 숫자를 확인하는 프로그램입니다:
var str = 'To be, or not to be, that is the question.'; var count = 0; var pos = str.indexOf('e'); //pos는 4의 값을 가집니다. while (pos !== -1) { count++; pos = str.indexOf('e', pos + 1); // 첫 번째 e 이후의 인덱스부터 e를 찾습니다. } console.log(count); // 로그에 4를 출력합니다.
Specifications
Specification | Status | Comment |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | Standard | Initial definition. |
ECMAScript 5.1 (ECMA-262) The definition of 'String.prototype.indexOf' in that specification. |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'String.prototype.indexOf' in that specification. |
Standard | |
ECMAScript 2017 Draft (ECMA-262) The definition of 'String.prototype.indexOf' in that specification. |
Draft |
브라우저 호환성
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |