[javascript] 문자열에 문자열이 포함되어있는지 확인하는 방법 - 문자열 검색
자바스크립트에서 문자열에 특정 문자열이 포함되어 있는지 확인하는 함수는 indexOf(), includes() 두 가지입니다.
사용 방법은 단순하지만 사용 방법은 조금 달라서 용도도 조금 다릅니다.
string.indexOf('찾는문자열')
문자열에서 찾는 문자열의 위치(인덱스)를 정수 값으로 반환합니다. 일치하는 문자열이 없으면 -1을 반환합니다.
찾는 문자열이 있는지만을 확인하려면 다음처럼 if문으로 조건 체크를 해야 합니다.
let string = "You have everything!";
let substring = "every";
if(string.indexOf(substring) !== -1){
//찾는 문자열이 있음
}
indexOf() 함수는 대소문자를 구분합니다. string.indexOf('Every')로 검색하면 -1이 반환됩니다. 대소문자 구분없이 검색하려면 다음처럼 toLowerCase() 함수, 또는 toUpperCase() 함수로 대문자, 또는 소문자로 변환해서 검색을 해야 합니다.
if(string.toLowerCase().indexOf(substring.toLowerCase()) !== -1){
console.log('있음');
}
string.includes('찾는문자열')
indexOf() 함수로 문자열을 검색하면 시작 위치 인덱스, 또는 -1이 반환되기 때문에 if 조건문으로 문자열이 존재 여부를 확인할 때는 -1이 아닌지 확인해야 합니다.
includes() 함수는 찾는 문자열이 있는지 여부만을 true/false 로 반환합니다.
let string = "You have everything!";
let substring = "every";
if(string.includes(substring)){ //true
//찾는 문자열이 있음
}
includes() 함수 또한 대소문자를 구분합니다.
검색 시작 위치 제한
indexOf(), includes() 함수는 두 번째 파라미터를 선택적으로 사용할 수 있습니다. 두 번째 파라미터는 문자열에서 일치 비교를 시작하는 인덱스 위치를 나타냅니다.
다음은 문자열의 11번째 문자부터 "찾는문자열"과 비교를 시작합니다. 따라서 일치하는 결과가 없게 됩니다.
if(string.includes(substring, 10)){ //true
console.log('있음');
}