👋 fromCodePoint(), codePointAt(), normalize()
1. fromCodePoint()
- 유니코드의 코드 포인트에 해당하는 문자 반환
-
파라미터에 다수의 코드 포인트 작성 가능
- 문자를 연결하여 반환
const point = String.fromCodePoint; console.log(point(49, 50, 51)); // 123 console.log(point(44032, 44033)); // 가각 console.log(point(0x31, 0x32, 0x33)); // 123 console.log(point(0x1f4118)); // 코끼리 이모지
-
ES5의
fromCahrCode()
사용Surrogate pair
로 작성
console.log(String.fromCharCode(0x1f418)); // 네모 아이콘 console.log(String.fromCharCode(0xd83d, 0xdc18)); // 코끼리 아이콘 // 1. fromCharCode()ㅇㅔ서는 0x1f418형태를 지원하지 않으므로 // 2. fromCharCode(0xD83D, 0xDc18)처럼 Surrogate pair로 작성함
2. codePointAt()
-
대상 문자열에서
- 파라미터에 작성한 인덱스 번째 문자를
- 유니코드 코드 포인트로 변환하여 반환
- 코드 포인트는 UTF-16으로 인코딩된 값
const result = '가나다'.codePointAt(2); console.log(result); // 45796 console.log(typeof result); // number console.log('가나다'.codePointAt(3)); // undefined console.log(String.fromCodePoint(result)); // 다 // 1. "가나다".codePointAt(2) 문자열 "가나다"에서 3번째의 코드 포인트를 구해 반환함 // 2. 반환된 코드 포인트 타입은 number임 // 3. 인덱스 번째에 문자가 없으면 undefined를 반환함 // 4. codePointAt(2)의 값은 45796이고 fromCodePoint(45796)의 값은 "다"임
3. normalize()
- 대상 문자열을 파라미터에 지정한
- 유니코드 정규화 형식으로 반환하여 반환
console.log('ㄱ'.codePointAt().toString(16)); // 3131 console.log('ㅏ'.codePointAt().toString(16)); // 314f console.log('₩u{3131}₩u{314F}'); // ㄱ ㅏ
const point = '₩u{3131}₩u{314F}'; console.log(point.noormalize('NFC')); // ㄱ ㅏ console.log(point.normalize('NFD')); // ㄱ ㅏ console.log(point.normalize('NFKD')); // 가 console.log(point.normalize('NFKC')); // 가