이 글은 '이웅모'님의 '모던 자바스크립트 Deep Dive' 책을 통해 공부한 내용을 정리한 글입니다. 저작권 보호를 위해 책의 내용은 요약되었습니다.
표준 빌트인 객체인 String 객체는 new 연산자와 함께 호출하여 String 인스턴스를 생성할 수 있다. new 연산자를 사용하지 않으면 인스턴스 대신 문자열을 반환한다. 이를 통해 명시적 타입 변환을 할 수 있다.
"Hi".length; // 2
"abc123ㄱㄴㄷ".length; // 9
배열 메서드는 원본 배열을 직접 수정하거나 새로운 배열을 반환하는 두 가지 타입의 메서드가 존재한다. String 메서드는 원본 문자열을 직접 변경하는 메서드는 없다. 문자열은 변경 불가능한 원시값이기 때문이다. 아래에선 자주 사용할 법한 메서드만 정리하였다.
const str = "hello";
str.indexOf("e"); // 1
str.indexOf("김"); // -1
const str = "hello";
str.search(/e/); // 1
str.search(/k/); // -1
const str = "hello";
str.includes("he"); // true
str.includes("김"); // false
const str = "hello";
str.charAt(1); // 'e'
str.charAt(5); // ''
const str = "hello";
// 첫 번째 인수 : 시작 위치(포함)
// 두 번째 인수 : 끝낼 위치(미포함)
str.slice(0, 3); // 'hel'
str.substring(0, 3); // 'hel'
str.slice(1); // 'ello'
str.substring(1); // 'ello'
str.slice(-2); // 'lo'
str.substring(-2); // 'hello' // 인수가 <0, NaN일 경우 0으로 취급
const str = "hello";
str.toUpperCase(); // 'HELLO'
const str = "HELLO";
str.upLowerCase(); // 'hello'
const str1 = " hello ";
const str2 = "h e l l o"
str1.trim(); // 'hello'
str2.trim(); // 'h e l l o'
const str = "hello world";
str.split(""); // (11) ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
str.split(" "); // (2) ['hello', 'world']
RangeError
const str = 'hello';
str.repeat(0); // ''
str.repeat(2); // 'hellohello'
str.repeat(-1); // RangeError
const str = 'hello world';
str.replace('world', 'Kim'); // 'hello Kim'
str.replace(/l/gi, 'L'); // 'heLLo worLd'
// 특수 교체 패턴 $&
str.replace('world', '<div>$&</div>'); // 'hello <div>world</div>'