본 포스팅은 JavaScript에서 두 개의 문자열을 비교하는 방법을 소개합니다.
방법 1. 동치 연산자(===)
두 피연산자의 값과 데이터 타입을 같이 비교하는 동치 연산자를 사용하여 두 개의 문자열을 비교할 수 있다.
const str1 = "Java";
const str2 = "Java";
console.log(str1 === str2); // true
다음 예시처럼 숫자 10이랑 문자열 “10”을 비교하면 데이터 타입이 다르므로 동치 연산자는 false를 반환한다.
const str1 = 10;
const str2 = "10";
console.log(str1 === str2); // false
하지만, 동등 연산자로 값을 비교하면 타입 변환 규칙에 의해 문자열을 숫자로 변환 후 값을 비교하므로 true를 반환한다.
const str1 = 10;
const str2 = "10";
console.log(str1 == str2); // true
방법 2. localeCompare() 메서드
두 개의 문자열을 사전적 순서로 비교하고 싶은 경우 localeCompare() 메서드를 사용할 수 있다. localeCompare() 메서드의 반환 결과는 다음과 같다.
- -1: 첫 번째 문자열이 두 번째 문자열보다 사전적으로 앞에 위치한다.
- 0: 두 문자열이 사전적으로 동일하다.
- 1: 첫 번째 문자열이 두 번째 문자열보다 사전적으로 뒤에 위치한다.
다음 예시는 첫 번째 문자열 “apple”이 두 번째 문자열”banana”보다 앞에 있으므로 -1을 반환한다.
const str1 = "apple";
const str2 = "banana";
const isCompare = str1.localeCompare(str2);
console.log(isCompare); // -1
반대로 첫 번째 문자열이 “banana”고 두 번째 문자열이 “apple”인 경우 1을 반환한다.
const str1 = "banana";
const str2 = "apple";
const isCompare = str1.localeCompare(str2);
console.log(isCompare); // -1
방법 3. 대소문자 구분 없이 비교
대소문자 구분 없이 문자열을 비교하려면 두 개의 문자열을 대문자나 소문자로 변환 후 동치 연산자로 값을 비교한다.
- toUpperCase(): 문자열을 대문자로 변환한다.
- toLowerCase(): 문자열을 소문자로 변환한다.
const str1 = "javaSCRIPT";
const str2 = "JAVAscript";
const isCompare = str1.toUpperCase() === str2.toUpperCase();
console.log(isCompare); // true
방법 4. 정규 표현식
마지막 방법으로 정규표현식으로 두 개의 문자열이 동일한지 비교할 수 있다.
- RegExp() 생성자를 사용하여 정규 표현식 객체 pattern을 생성한다.
- ^로 문자열의 시작, $로 문자열의 끝을 지정한다.
const str1 = "JAVAscript";
const str2 = "javaSCRIPT";
const pattern = new RegExp(`^${str1}$`);
const isCompare = pattern.test(str2);
console.log(isCompare); // false
대소문자 구분 없이 문자열을 비교하고 싶은 경우 RegExp() 생성자 함수의 두 번째 매개변수로 “i”를 전달한다. “i” 플래그는 대소문자 구분하지 않고 일치하는 패턴을 찾도록 지정해주는 플래그다.
const str1 = "JAVAscript";
const str2 = "javaSCRIPT";
const pattern = new RegExp(`^${str1}$`, "i");
const isCompare = pattern.test(str2);
console.log(isCompare); // true