유니코드는 U+0031 형태
코드 포인트(code point)
110만개 정도 표현
plane(평면)
첫 번째 plane
첫 번째 plane을 제외한 plane
Escape Sequence
const escape = "\x31\x32\x33";
log(escape);
log("\\");
// 123
// \
const escape = "\x31\x32\x33";
log(escape);
const unicode = "\u0034\u0035\u0036";
log(unicode);
// 123
// 456
const unicode = "\u0031\u0032\u0033";
log(unicode);
const es6 = "\u{34}\u{35}\u{36}";
log(es6);
// 코끼리 이미지
log("\u{1f418}");
// 123
// 456
// 🐘
const pair = "\uD83D\uDC18";
log(pair);
// 🐘
Surrogate pair 계산 방법
유니코드 사용의 참조 사항
const point = String.fromCodePoint;
log(point(49, 50, 51));
log(point(44032, 44033));
log(point(0x31, 0x32, 0x33));
log(point(0x1F418));
// 123
// 가각
// 123
// 🐘
log(String.fromCharCode(0x1f418));
log(String.fromCharCode(0xD83D, 0xDC18));
//
// 🐘
const result = "가나다".codePointAt(2);
log(result);
log(typeof result);
log("가나다".<codePointAt(3));
log(String.fromCodePoint(result));
// 45796
// number
// undefined
// 다
String.fromCodePoint(49, 50)와 "123".codePointAt(1)은 형태가 다름 => 형태를 다르게 한 것은 무엇 때문일까?
String.fromCodePoint(49, 50)
"123".codePointAt(1)
[1, 2, 3]으로 작성하면 어떻게 될까
log("ㄱ".codePointAt().toString(16));
log("ㅏ".codePointAt().toString(16));
log("\u{3131}\u{314F}");
// 3131
// 314f
// ㄱㅏ
const point = "\u{3131}\u{314F}";
log(point.normalize("NFC"));
log(point.normalize("NFD"));
log(point.normalize("NFKD"));
log(point.normalize("NFKC"));
// ㄱㅏ
// ㄱㅏ
// 가
// 가
const target = "ABC";
log(target.startsWith("AB"));
log(target.startsWith("BC"));
log(/^AB/.test(target));
// true
// false
// true
const target = "ABCD";
log(target.startsWith("BC", 1));
log(target.startsWith("BC", 2));
// true
// false
const target = "ABC";
log(target.endsWith("BC"));
log(target.endsWith("AB"));
log(/BC$/.test(target));
// true
// false
// true
const target = "ABC";
log(target.endsWith("AB", 2));
// true
const target = "ABC";
log(target.repeat(3));
log(target.repeat(0));
log(target.repeat());
log(target.repeat(2.7)); // 0.7 무시하고 2 사용
// ABCABCABC
// ""
// ""
// ABCABC
const target = "123";
log(target.includes("1"));
log(target.includes(12));
log(target.includes("13"));
// true
// true
// false
첫 번째 파라미터
두 번째 파라미터(선택)
const target = "ABC";
log(target.includes("A", 1));
try {
result = target.includes(\^A\);
} catch (e) {
log("정규 표현식 사용 불가");
};
// false
// 정규 표현식 사용 불가
첫 번째 파라미터 값만큼 길이를 늘리고
두 번째 파라미터에 채울 문자열 작성
log("ABC".padStart(10, "123"));
log("ABC".padStart(6, "123456"));
log("ABCDE".padStart(3, "123"));
log("ABC".padStart(6).length);
// 1231231ABC
// 123ABC
// ABCDE
// 6
첫 번째 파라미터 값만큼 길이를 늘리고
두 번째 파라미터에 채울 문자열 작성
log("ABC".padEnd(10, "123"));
log("ABC".padEnd(6, "123456"));
log("ABCDE".padEnd(3, "123"));
log("ABC".padEnd(6).length);
// ABC1231231
// ABC123
// ABCDE
// 6
const value = " 123";
log(value.length);
log(value.trimStart().length);
const split = "a, b, c".split(",");
for (let value of split){
log(`${value}, ${value.length}`);
log(value.trimStart()length);
};
// 5
// 3
// a, 1
// 1
// b, 2
// 1
// c, 2
// 1
const value = "123 ";
log(value.length);
log(value.trimEnd().length);
// 5
// 3