문자열 (String)
Summary
JavaScript에서 문자열은 글자 하나만 저장할 수 있는 별도의 자료형 없이, 텍스트 데이터 전체를 다룰 수 있다. 문자열은 항상 UTF-16 형식을 따르며, 다양한 따옴표 방식과 특수 문자를 활용할 수 있다.
Details
따옴표의 종류
JavaScript에서 문자열을 정의할 때 사용할 수 있는 따옴표에는 세 가지 종류가 있다.
let single = '작은따옴표';
let double = '큰따옴표';
let backticks = `백틱`;
팁
백틱( `` )을 사용하면 템플릿 리터럴(template literal)을 활용하여 문자열 중간에 표현식을 삽입할 수 있다.
function sum(a, b) {
return a + b;
}
console.log(`1 + 2 = ${sum(1, 2)}`); // "1 + 2 = 3"
백틱을 사용하면 여러 줄에 걸친 문자열도 쉽게 작성할 수 있다.
let guestList = `손님:
* John
* Pete
* Mary`;
console.log(guestList);
특수 문자
JavaScript에서는 줄 바꿈이나 따옴표 등을 문자열에 포함하기 위해 **이스케이프 문자(escape character)**를 사용할 수 있다.
| 특수 문자 | 설명 |
|---|---|
\n | 줄 바꿈 |
\r | 캐리지 리턴 |
\', \" | 따옴표 |
\\ | 역슬래시 |
\t | 탭 |
\uXXXX | UTF-16 유니코드 문자 |
console.log("I'm a developer."); // I'm a developer.
console.log('Hello\nWorld'); // 줄 바꿈
노트
역슬래시 \는 문자열 내에서 특수 문자를 나타내기 위한 기호로 사용된다.
문자열 길이
문자열의 길이는 .length 속성을 사용하여 확인할 수 있다.
console.log('Hello'.length); // 5
문자열 내 특정 문자 접근
문자열의 특정 위치에 있는 문자에 접근하려면 [] 또는 charAt()을 사용할 수 있다.
let str = 'Hello';
console.log(str[0]); // "H"
console.log(str.charAt(0)); // "H"
정보
문자열은 불변(immutable) 이므로 중간의 글자를 직접 수정할 수 없다.
대·소문자 변경
console.log('JavaScript'.toUpperCase()); // "JAVASCRIPT"
console.log('JavaScript'.toLowerCase()); // "javascript"
문자열 검색
| 메서드 | 설명 |
|---|---|
indexOf(substr, pos) | 특정 문자열의 위치를 반환 (없으면 -1) |
includes(substr, pos) | 특정 문자열이 포함되었는지 여부를 반환 |
startsWith(substr) | 해당 문자열로 시작하는지 여부를 반환 |
endsWith(substr) | 해당 문자열로 끝나는지 여부를 반환 |
let str = 'Widget with id';
console.log(str.includes('Widget')); // true
console.log(str.startsWith('Wid')); // true
console.log(str.endsWith('id')); // true
부분 문자열 추출
| 메서드 | 설명 |
|---|---|
slice(start, end) | start부터 end까지 추출 (음수 허용) |
substring(start, end) | start부터 end까지 추출 (음수는 0 처리) |
substr(start, length) | start부터 length개의 문자 추출 |
let str = 'stringify';
console.log(str.slice(0, 5)); // "strin"
console.log(str.substring(2, 6)); // "ring"
console.log(str.substr(2, 4)); // "ring"
경고
substr는 최신 JavaScript 표준에서 비권장(Deprecated)으로 간주되므로 slice를 사용하는 것이 좋다.
문자열 비교
문자열 비교 시 기본적으로 유니코드 코드 포인트 기준으로 비교가 이루어진다.
console.log('a' > 'Z'); // true
console.log('Österreich' > 'Zealand'); // true
문자열을 언어에 맞게 비교하려면 localeCompare()를 사용한다.
console.log('Österreich'.localeCompare('Zealand')); // -1
기타 문자열 메서드
| 메서드 | 설명 |
|---|---|
trim() | 앞뒤 공백 제거 |
repeat(n) | 문자열을 n번 반복 |
replace() | 특정 문자열을 다른 문자열로 교체 |
let text = ' Hello World! ';
console.log(text.trim()); // "Hello World!"
console.log('Hello '.repeat(3)); // "Hello Hello Hello "
Reference
link: External reference