JavaScript에서 문자열에 하위 문자열이 포함되어 있는지 확인
- 정규식을 사용하여 JavaScript에서 문자열에 하위 문자열이 포함되어 있는지 확인
-
String.includes()
를 사용하여 JavaScript에서 문자열에 하위 문자열이 포함되어 있는지 확인 -
String.indexOf()
를 사용하여 JavaScript에서 문자열에 하위 문자열이 포함되어 있는지 확인
이 튜토리얼에서는 JavaScript에서 문자열에 하위 문자열이 포함되어 있는지 확인하는 방법을 설명합니다.
간단하고 일반적인 작업이지만 언어마다 다른 방식으로 처리합니다. 위의 목표를 달성하기 위해 JavaScript의 내장 메소드와 사용자 정의 작성 메소드를 살펴 보겠습니다.
정규식을 사용하여 JavaScript에서 문자열에 하위 문자열이 포함되어 있는지 확인
하위 문자열의 존재를 확인하는 가장 강력하고 전통적인 방법 중 하나입니다. JavaScript 내장 메소드를 사용하면 상수 문자열 만 확인할 수 있고 동작의 대소 문자 구분을 변경할 수 없기 때문에 내장 메소드에 비해 많은 유연성을 제공합니다. RegExp.test()
메소드를 사용하여 문자열의 하위 문자열을 확인합니다.
let str = 'delftstack';
console.log(/stack/.test(str));
출력:
true
여기서.test()
함수를 사용하여stack
하위 문자열이delftstack
문자열 내에 있는지 확인하고 결과적으로true
를 얻습니다.
그러나 정규식의 장점은 내장 된 JavaScript 메서드로는 불가능한 대소 문자를 구분하지 않는 검색을 수행 할 수 있다는 사실에 있으며, 그것이 무엇인지 알지 못해도 고정 길이의 숫자 하위 문자열과 같은 패턴을 찾을 수도 있습니다.
let str = 'delftstack';
console.log(stack / i.test(str));
출력:
true
/stack/
표현식에i
를 추가하고 대소 문자를 구분하지 않는 검색을 수행 할 수 있습니다.
String.includes()
를 사용하여 JavaScript에서 문자열에 하위 문자열이 포함되어 있는지 확인
ES6는 문자열 내부에 주어진 하위 문자열이 있는지 확인하는 데 도움이되는.includes()
함수를 도입했습니다. true
또는false
로 존재를 알리는 부울 값을 리턴합니다. 대소 문자를 구분하는 방법이므로 하위 문자열S
가s
와 일치하면false
를 반환합니다.
이 메서드는 2 개의 인수를 취합니다. 첫 번째는 부분 문자열이고 두 번째는 문자열 내에서 검색을 시작하려는 인덱스입니다. 두 번째 인수가 왼쪽 경계를 벗어난 경우 즉,0
보다 작 으면 JavaScript는 색인0
에서 검색을 시작합니다. 문자열 길이보다 크면 직접 false를 반환합니다.
const str = 'delftstack';
const substr = 'stack';
console.log(str.includes(substr));
출력:
true
위의 코드에서 하위 문자열을 함수에 전달하고stack
이 문자열delftstack
내에 있으므로true
를 반환합니다.
const str = 'delftstack';
const substr = 'stack';
console.log(str.includes(substr, 4));
출력:
true
이 코드는5th
인덱스에서stack
단어 검색을 시작합니다.
String.indexOf()
를 사용하여 JavaScript에서 문자열에 하위 문자열이 포함되어 있는지 확인
ES6가String.includes()
메소드를 도입하기 전에 유일한 내장 메소드는.indexOf()
였습니다. String.includes()
메소드와 매우 유사합니다. 부울 값을 반환하는 대신이 메서드는 하위 문자열이 주어진 문자열 내에 있으면 하위 문자열의 첫 번째 문자 인덱스를 반환하고 하위 문자열이 없으면-1
을 반환합니다.
const str = 'delftstack';
const substr = 'stack';
console.log(str.indexOf(substr) != -1);
출력:
true
오래되었을 수도 있지만-1
과 같지 않은지 확인하기 위해 함수 결과에 검사를 추가하는 것만으로.includes()
처럼 사용할 수 있으므로 더 정확합니다. .includes()
와 달리 하위 문자열 시작의 정확한 색인을 반환하며 훨씬 더 실질적으로 중요 할 수 있습니다.
String.includes()
를 제외한 위의 모든 메소드는 모든 주요 브라우저에서 지원됩니다. String.includes()
는 ES6에서 도입되었으며 Internet Explorer에서 여전히 지원되지 않습니다. 이를 수행하는 또 다른 방법은 광범위한 응용 프로그램과 함께O(n)
알고리즘 인 KMP (Knuth-Morris-Pratt) 알고리즘을 사용하는 것입니다. 그것은 그 자체로 거대한 주제이며 우리는 향후 포스트에서 다룰 것입니다.
Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.
LinkedIn