문자열
문자열
텍스트 형식의 데이터는 길이에 상관없이 문자열 형태로 저장
페이지 인코딩 방식과 상관없이 항상 UTF-16 형식 따름
-
따옴표
작은 따옴표, 큰 따옴표, 백틱 으로 감쌀 수 있음
작은 따옴표와 큰 따옴표 차이 기능상 차이 없음
백틱에는 템플릿 리터럴 로 표현식을 문자열 중간에 삽입 가능
-
백틱
표현식을 문자열 중간에 삽입 가능
문자열 여러줄에 걸쳐 작성 가능
‘템플릿 함수’ 기능 제공
-
역슬레시
이스케이프 문자로 불림
특수문자 표시할 때 사용
\로 시작
따옴표도 표시 가능
문자열 정확하게 읽기 위 한 용도로 사용
제 약할 끝나면 사라짐
메모리에 저장되지 않음
\ 보여줄 시 \
-
문자열 길이
length 프로퍼티에서 제공
\n 은 ‘특수문자’ 하나로 취급됨
-
length 는 프로퍼티
숫자가 저장되는 프로퍼티
-
특정 글자 접근
-
대괄호
근래의 사용 방식
접근하려는 위치에 글자 없을 시 undefined
-
str.charAt(pos)
하위 호환성을 위해 남음
접근하려는 위치에 글자 없을 시 빈 문자열
-
for..of
문자열을 구성하는 글자 대상으로 반복 작업 가능ㅇ
-
-
문자열의 불변성
문자열 중간 글자 하나 바꾸려고 할 시 에러 발생
새로운 문자열 만든 후 이 문자열 str 에 할당
-
대/소문자 변경
toLowerCase(), toUpperCase() 로 대/소 문자 변경 (케이스 변경)
글자 하나의 케이스만 변경 가능
-
부분 문자열 찾기
-
str.indexOf(substr, [pos])
문자열 str의 pos 에서 시작해, 부분 문자열 substr 의 위치 반환, 그렇지 못 하면 -1 반환
-
str.lastIndexOf(substr,position)
indexOf 와 유사한 기능
문자열 끝에서부터 부분문자 찾음
반환되는 부분 문자열 위치는 문자열 끝이 기준
if 문에서 비교시 -1 과 비교
-
-
비트 NOT 연산자 사용한 기법
피연산자를 32비트로 바꾼 후(소수부는 모두 버려짐) 모든 비트 반전
~ 로 사용
if…indexOf 에서 사용시 -1과 쉽게 비교 가능 (지양)
-
include,startsWith,endsWith
-
str.include(substr,[pos])
str 에 부분 문자열 substr 이 있는지에 따라 true/false 사용
포함 여부만 알고 싶을 시 적절
-
str.startsWith,/endsWith
특정 문자열로 시작되는지/끝나는지 알 수 있음
-
-
부분 문자열 추출하기
- str.slice(start,[,end])
start부터 end 까지(end 미포함) 반환
두번째 인수 생략시 문자열 끝까지 반환
인수에 음수 넘길 시 문자열 끝에서부터 카운팅
- str.substring(start,[,end])
start 와 end 사이 문자열 반환
start가 end보다 커도 괜찮음
음수 인수 허용 안 함
- str.substr(start,[length])
start 부터 length 개의 글자 반환
첫번째 인수 음수면 뒤에서부터 개수 셈
-
어떤 메서드?
substr 은 구식. 지원 안 하는 호스트 환경 있을 수 있음
slice 가 음수 인수 허용하고 유연함
-
문자열 비교
알파벳 순서 기준으로 글자끼기 비교
모든 문자열 UTF-16 사용해 인코딩됨
-
예외
-
소문자는 대문자보다 항상 큼
-
발음 구별 기호 붙는 글자는 알파벳 순서 기준 따르지 않음
-
코드관련 메소드
-
str.codePointAt(pos)
pos에 위치한 글자 코드 반환
-
String.fromCodePoint(code)
숫자 형식의 code 에 대응하는 글자 만들어줌
-
-
-
-
문자열 제대로 비교
모던 브라우저 대부분이 ECMA-402 지원
-
str.localeCompare(str2)
ECMA-402 규칙에 따라 str,str2 비교 해줌
인수에 하나 더 넣어서 여러 설정에 대응 가능
-
-
문자열 심화
-
서로 게이트 쌍
2바이트 표현 체계로 충분하지 않음
사용 빈도 낮은 기호는 ‘서로게이트 쌍’ 이라 불리는 2바이트 글자 쌍을 사용해 인코딩
인코딩한 기호는 2바이트
String.fromCodePoint와 str.codePointAt 로 제대로 처리 가능
-
발음 구별 기호와 유니코드 정규화
임의 조합 지원하기 위해 몇개의 유니코드 문자 남겨놓음
이를 이용하여 베이스 글자 꾸미기 가능
단점으로 눈으로 봤을 때 같은 글자이지만 유니코드 조합 다른 경우 생김
-
유니코드 정규화
str.normalize 에 구현
UTF-16 테이블에 포함하는 코드만 부여.
-
-
요약
-
JS는 문자열 UTF-16 형식 따름
-
따옴표는 작은,따옴표, 큰 따옴표, 백틱으로 나뉨
-
작은 따옴표, 큰 따옴표는 차이 없음
-
백틱으로 표현식, 여러줄, ‘템플릿 함수’ 제공
-
역슬레시로 특수문자 표시 가능
-
문자열 길이는 length 프로퍼티
-
특정 글자 접근시 대괄호, str.charAt, for…of (이터러블)
-
문자열은 불변성 가지고 있어서 중간 하나 바꾸기 불가능
-
toLowerCase(), toUpperCase()로 대/소문자 변경
-
str.indexOf, str.lastIndexOf 로 부분 문자열 비교 가능
-
include,startsWith,endsWith 로 여러 방식으로 문자열 찾기 가능
-
slice,substring,substr로 부분 문자열 추출
-
모던 JS 에선 slice 추천
-
문자열 비교는 UTF-16 기준
-
제대로 비교시 str.localeCompare(str2)
-
서로 게이트 쌍으로 사용 빈도 낮은 기호 표현
-
발음 구별 기호는 유니코드 조합으로 가능
-
str.normalize 로 유니코드 정규화 가능