대상 문자열 안에 특정한 부분 문자열이 있는지 찾고 싶다.
String 객체의 내장 메서드 indexOf
를 사용하면 부분 문자열의 위치를 알 수 있다.
var testValue = "This is the Cookbook's test string";
var subValue = "Cookbook";
var iValue = testValue.indexOf(subValue); // 부분 문자열의 위치인 12를 반환
if(iValue != -1) // 찾는 문자열이 존재하므로 성공
String 객체의 indexOf
메서드는 인덱스 혹은 부분 문자열의 첫번째 글자가 있는 위치를 나타내는 숫자를 반환한다. 부분 문자열이 대상 문자열 안에 없는지 확인하려면 반환되는 값이 -1인지 살펴보면 된다.
if(iValue != -1) // 부분 문자열이 있으면 참
indexOf
메서드는 두개의 인수를 갖는다. 첫번째 인수는 찾고자 하는 부분 문자열이고, 두번째 인수는 검색을 시작할 위치의 인덱스값이다. 두번째 인수는 생략할 수 있다.
var testValue = "This apple is my apple";
var iValue = testValue.indexOf("apple", 10); // 두번째 부분 문자열의 인덱스 17을 반환
indexOf
메서드는 왼쪽에서 오른쪽으로 탐색한다. 그러나 때로는 문자열을 오른쪽에서 왼쪽으로 탐색하고 싶을 때가 있다. 이럴때는 String 객체의 lastIndexOf
를 사용하면 된다. lastIndexOf
는 가장 마지막에 나타난 부분 문자열의 인덱스 위치를 반환한다.
var testValue = "This apple is my apple";
var iValue = testValue.lastIndexOf("apple"); // 마지막에 나타난 부분 문자열의 위치 17을 반환
lastindexOf
의 두번째 인수는 마찬가지로 생략할 수 있으며, 검색 시작 위치를 전달받는다.
"This apple is my apple".lastIndexOf("apple"); // 17 반환
"This apple is my apple".lastIndexOf("apple", 12); // 5 반환
"This apple is my apple".lastIndexOf("apple", 3); // -1 반환, 찾지 못했음
따옴표로 감싼 문자열에서 바로 String 메서드를 호출하는 것이 이상해 보일 수 있다. 자바스크립트에서는 문자열 변수에서 메서드를 호출하는 것과 문자열 리터럴에서 메소드를 호출하는 것 사이에는 아무런 차이가 없다.