String 오브젝트 -ECMAScript
- String 오브젝트- Unicode- fromCodePoint(): 코드 포인트 문자 반환
- codePointAt(): 코드 포인트 값 반환
 
- includes(): 문자열 포함 여부
- startsWith(): 문자열 시작 여부
- endsWith(): 문자열 종료 여부
- repeat(): 문자열 복제
- normalize(): 유니코드 정규화 형식 변환
 
- Unicode
Unicode
유니코드는 “U+”를 작성하고 이어서 코드 포인트(codepoint)를 작성합니다.
코드 포인트는 4자리 이상의 UTF-16 진수 형태로 U+0000 에서 U+10FFFF까지 약 110만 개 정도를 사용할 수 있습니다.
코드 포인트 전체는 17개 평면(plane)으로 나누어져 있으며, 하나의 평면은
65535(U+FFFF)개 입니다. 첫 번째 평면을 BMP(Basic Multilingual Plane)라고 부르며 일반적인 문자가 이 평면에 속합니다. (ex 한글)
BPM를 제외한 코드 포인트가 속한 평면을 Supplementary plane 또는 Astral plane이라고 부릅니다. 5자리 이상의 코드 포인트가 여기에 속합니다.
| 1 | // 16진수 이스케이프 시퀀스 | 
- “\x31\x32\x33”를 변환하면 123이 반환됩니다. \에 이어서 16진수로 값을 작성합니다. 이 형태를 16진수 이스케이프 시퀀스(Escape Sequence)라고 합니다.
- “\x31\x32\x33” 를 유니코드로 작성하면 “\u0031\u0032\u0033” 형태가 됩니다.
 이를 유니코드 이스케이프 시퀀스라고 합니다. UTF-16 진수 형태로 U+0000에서 U+FFFF까지 사용할 수 있습니다.
- U+FFFF 보다 큰 코드 포인트 (유니코드 이스케이프 시퀀스 범위를 넘어가는)는
 ES6에서 “\u{34}”와 같이 중괄호 안에 코드 포인트를 작성합니다.
 이를 유니코드 코드 포인트 이스케이프라고 합니다.
 \u{1f418}과 같이 5자리로도 작성할 수 있습니다.
- 코끼리 이모지를 출력하는 유니코드 코드 포인트 이스케이프 값 입니다.
 브라우저 마다 이모지 모습이 조금씩 차이가 있을 수 있습니다.
- \u{1F418} 형태는 ES5에서 사용할 수 없습니다.
 ES5에서 사용할 수 있는 형태를Surrogate pair라고 하며 “\uD83D\uDC18”와 같이 두 개의 유니코드 이스케이프 시퀀스를 사용 합니다.
fromCodePoint(): 코드 포인트 문자 반환
유니코드의 코드 포인트에 해당하는 문자를 반환합니다.
String.fromCodePoint(param);
| 1 | // #$%& | 
codePointAt(): 코드 포인트 값 반환
문자열에서 파라미터에 지정한 인덱스 번째 문자의 코드 포인트 값을 반환합니다.
파라미터의 디폴트 값은 0 입니다.
해당 인덱스에 문자가 없으면 undefined를 반환합니다.
| 1 | console.log("가".codePointAt(0)); | 
includes(): 문자열 포함 여부
str.includes(searchString[, position])
매개변수
- searchString: 
 이 문자열에서 찾을 다른 문자열.
- position (선택적 파라미터) 
 searchString을 찾기 시작할 위치. 기본값 0.
반환값
문자열을 찾아내면 true. 실패하면 false.
| 1 | let target = "123가나다라456"; | 
- target.includes(2)가 숫자 값이지만 문자열로 변환하여 비교합니다.- true
- 유니코드의 코드 포인트 값으로 체크하기 때문에 한글을 체크할 수 있습니다. true
- target안에 12가 있지만 6번째 이후 부터 체크 하므로- false
starsWith(): 문자열 시작 여부
startsWith() 메소드는 어떤 문자열이 특정 문자로 시작하는지 확인하여 결과를 true 혹은 false로 반환합니다. 대소문자를 구분합니다.
str.starsWith(searchString[, position])
매개변수
- searchString: 
 이 문자열에서 찾을 다른 문자열.
- position (선택적 파라미터) 
 searchString을 찾기 시작할 위치. 기본값 0.
반환값
문자열이 검색 문자열로 시작하면 true. 아니면 false.
| 1 | let target = "123가나다"; | 
- 123으로 대상 문자열이 시작하므로 true반환.
 두 번째 파라미터를 작성하지 않았으므로 비교 시작 인덱스는 0
- 23으로 시작하지 않으므로 false
- 두 번째 파라미터에 인덱스 값 3을 작성하여 4 번째 부터 비교합니다.
 대상 문자열 4번째에 “가나”로 시작하므로true
endsWith(): 문자열 종료 여부
endsWith() 메서드를 사용하여 어떤 문자열에서 특정 문자열로 끝나는지를 확인할 수 있으며, 그 결과를 true 혹은 false로 반환합니다.
str.endsWith(searchString[, position])
- searchString 
 대상 문자열의 끝이 특정 문자열로 끝나는지를 찾기 원하는 문자열입니다.
- position (선택적 파라미터) 
 찾고자 하는 문자열의 길이값이며, 기본값은 문자열 전체 길이입니다.
 문자열의 길이값은 문자열 전체 길이 보다 길 수 없습니다.
| 1 | let target = "123가나다"; | 
- 대상 문자열이 “가나다”로 끝나므로 true
- “가나”로 끝나지 않으므로 false
- 두 번째 파라미터에 길이 값 5를 지정했으므로 대상 문자열의 5번째 까지만 비교합니다. “가나”로 끝나게 되므로 true반환
repeat(): 문자열 복제
repeat() 메서드는 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환합니다.
str.repeat(count);
- count 
 문자열을 반복할 횟수. 0과 양의 무한대 사이의 정수([0, +∞)).
- 반환값 
 현재 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열.
- 예외 
 RangeError: 반복 횟수는 양의 정수여야 함.
 RangeError: 반복 횟수는 무한대보다 작아야 하며, 최대 문자열 크기를 넘어선 안됨.
| 1 | let target = "123"; | 
- “123” 문자열을 3번 반복하여 123123123 반환 
- 파라미터에 0을 작성하면 빈 문자열을 반환합니다. “” 
- 2.7과 같이 소수를 작성하면 소수를 버리고 정수만 사용하여 복제합니다. 
 123123 이 반환됩니다.
normalize(): 유니코드 정규화 형식 변환
대상 문자열을 파라미터에 작성한 유니코드 정규화 형식으로 변환하여 반환합니다.
만약 주어진 값이 문자열이 아닐 경우에는 우선 문자열로 변환 후 정규화합니다.
str.normalize([form])
- form 
 유니코드 정규화 방식을 지정합니다. “NFC”, “NFD”, “NFKC”, “NFKD” 중 하나이며, 생략되거나 undefined 일 경우 “NFC”가 디폴트 값 입니다.- NFC — 정규형 정준 결합(Normalization Form Canonical Composition).
- NFD — 정규형 정준 분해(Normalization Form Canonical Decomposition).
- NFKC — 정규형 호환성 결합(Normalization Form Compatibility Composition).
- NFKD — 정규형 호환성 분해(Normalization Form Compatibility Decomposition).
 
- 반환 값 
 주어진 문자열을 유니코드 정규화 방식에 따라 정규화된 문자열로 반환합니다.
form이 위에서 명시된 값 중 하나가 아닐 경우 RangeError 에러가 발생합니다.
normalize() 메서드는 문자열을 유니코드 정규화 방식에 따라 정규화된 형태로 반환합니다. 문자열의 값 자체에는 영향을 주지 않습니다.
| 1 | console.log("1:", "ㄱ".charCodeAt(0)); | 
- “ㄱ” 과 “ㅏ” 가 연결된 “가” 모습이 아닌 “ㄱㅏ” 형태가 됩니다.
 파라미터에 형식 값을 작성하지 않아도 디폴트 값 NFC 변환 형식이 적용됩니다.
- NFC와 같이 NFD도 “ㄱㅏ” 형태로 출력됩니다.
- NFKD 와 NFKC는 “가” 와 같이 글자 하나로 출력됩니다.