자바스크립트는 문자 하나만 저장하는 별도의 자료형 없이, 길이가 얼마나 되든 모두 문자열의 형태로 저장합니다.
문자열은 인코딩 방식과 상관없이 UTF-8 형식을 따릅니다.
문자열을 감싸는 따옴표는 세 가지가 존재합니다.
❗ 백틱을 이용하면 문자열 중간에 표현식을 넣어줄 수 있습니다.
function sum(a, b) {
return a + b;
}
alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
const num = 10;
alert(`num is ${num}`); // num is 10
또한, 여러 줄에 걸쳐 문자열을 작성하는 것도 가능합니다.
let guestList = `손님:
* John
* Pete
* Mary
`;
alert(guestList); // 손님 리스트를 여러 줄에 걸쳐 작성함
주로 문자열 중간에 변수를 포함할 때 백틱을 사용합니다.
\ 를 사용하여 문자열 내에 특수 기호를 삽입할 수 있습니다.
\n : 줄 바꿈\t : 탭\\ : 역슬래시\', \" : 따옴표문자열은 length 라는 프로퍼티를 가지며, 이에 문자열의 길이가 저장됩니다.
let str = "hello!";
alert(str.length);
보통 length 를 메서드로 사용하므로 헷갈릴 수 있지만, 자바스크립트에서는 프로퍼티로 사용합니다.
문자열에서 특정한 위치의 문자에 접근하려면 두 가지 방법을 이용합니다.
str[pos] 처럼 대괄호 이용str.charAt(pos) 메서드 이용let str = `Hello`;
// 첫 번째 글자
alert( str[0] ); // H
alert( str.charAt(0) ); // H
// 마지막 글자
alert( str[str.length - 1] ); // o
for..of 를 사용하여 문자열을 구성하는 문자를 하나씩 지나가는 반복문을 수행할 수 있습니다.
for (let char of "Hello") {
alert(char); // H,e,l,l,o (char는 순차적으로 H, e, l, l, o 가 됨)
}
문자열은 수정할 수 없으므로, 중간의 문자를 바꾸려 한다면 에러가 발생합니다.
let str = 'Hi';
str[0] = 'h'; // Error: Cannot assign to read only property '0' of string 'Hi'
alert( str[0] ); // 동작하지 않음
문자열은 읽기 만 가능한 변하지 않는 값입니다.
str.toLowerCase() : 소문자로 변경 후 문자열 반환str.toUpperCase() : 대문자로 변경 후 문자열 반환str.indexOf(substr, [pos]) : pos 부터 탐색하여 substr 의 위치를 반환, 없다면 -1 반환 str.includes(substr, [pos]) : 부분 문자열이 있다면 true, 없다면 false 반환str.startsWith(substr) / str.endsWith(subStr) : 부분 문자열로 시작하는지 / 끝나는지 여부 확인str.slice(start, [, end]) : start 부터 end 까지 문자열 추출 (end 는 미포함) / end 가 없다면 start 부터 끝까지str.trim() : 문자열 앞뒤 공백 제거str.repeat(n) : 문자열을 n 번 반복❗특정 문자열을 추출하는 메서드를 사용할 경우, 대문자와 소문자를 구분하므로 str.toLowerCase() 등을 이용하여 변환 후 문자열 추출, 비교를 수행해야 합니다.
자바스크립트에서는 모든 문자열을 UTF-8 형식으로 인코딩합니다.
UTF-8 은 모든 문자를 숫자 형식의 코드와 매칭하므로, 이를 이용하여 문자열을 비교합니다.
❗ 소문자는 대문자보다 큰 숫자 코드를 지니므로, 문자열 비교시 소문자가 대문자보다 항상 큽니다.