문자열

345·2023년 2월 12일

모던 JavaScript

목록 보기
8/23

문자열

자바스크립트는 문자 하나만 저장하는 별도의 자료형 없이, 길이가 얼마나 되든 모두 문자열의 형태로 저장합니다.
문자열은 인코딩 방식과 상관없이 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 은 모든 문자를 숫자 형식의 코드와 매칭하므로, 이를 이용하여 문자열을 비교합니다.

❗ 소문자는 대문자보다 큰 숫자 코드를 지니므로, 문자열 비교시 소문자가 대문자보다 항상 큽니다.

profile
기록용 블로그 + 오류가 있을 수 있습니다🔥

0개의 댓글