truncate
문자열을 정해진 길이까지 줄이고, 자른 자리를 말줄임표로 표시합니다. 유니코드를 안전하게 다루며, 어느 쪽을 남기느냐에 따라 자름의 뜻이 달라진다는 것도 알고 있습니다.
사용법
ts
import { truncate } from 'ranuts/utils';
truncate('the quick brown fox', 12); // 'the quick b…'
truncate('/Users/me/code/app/src/index.ts', { length: 20, position: 'start' });
// '…de/app/src/index.ts'
truncate('0xabcdef0123456789', { length: 11, position: 'middle' });
// '0xabc…56789'API
truncate(value, options)
매개변수
| 매개변수 | 설명 | 타입 | 기본값 |
|---|---|---|---|
value | 줄일 문자열 | string | 필수 |
options | 숫자만 넘기면 { length }의 줄임말입니다 | TruncateOptions | number | 필수 |
TruncateOptions
| 필드 | 설명 | 타입 | 기본값 |
|---|---|---|---|
length | 결과의 최대 길이. 말줄임표도 셈에 넣습니다 | number | — |
position | 어느 쪽을 남길지. 아래를 보세요 | 'end' | 'start' | 'middle' | 'end' |
ellipsis | 자른 자리에 넣을 표시 | string | '…' |
position은 어느 쪽을 남길지를 정하며, 그 선택에는 실제로 뜻이 담깁니다.
'end'(기본)는 앞쪽을 남깁니다. 글이나 제목에 알맞습니다.'start'는 끝쪽을 남깁니다. 파일 경로가 바라는 것이 이쪽이지요./Users/누구/work/…는 읽는 사람이 이미 아는 부분이고,…/src/utils/str.ts가 알고 싶은 부분입니다.'middle'은 양쪽 끝을 남깁니다. 해시나 계좌번호처럼 머리 와 꼬리가 모두 뜻을 갖는 식별자에 알맞습니다.
반환값
string이며, length를 넘지 않습니다. length가 말줄임표 자체보다 짧으면, 넘쳐 나는 대신 말줄임표 쪽이 잘립니다.
참고
- UTF-16 코드 단위가 아니라 유니코드 코드 포인트로 자릅니다. 무심히
value.slice(i)를 쓰면 서러게이트 쌍 한가운데에 떨어질 수 있습니다. 기본 다국어 평면 밖의 문자(이모지, 일부 CJK 확장 문자)는 UTF-16으로 두 단위라, 말줄임표 옆에 짝 없는 서러게이트가 남아 깨진 글자로 보입니다.truncate는 코드 포인트 단위로 훑으므로 여러 단위짜리 문자가 쪼개지는 일이 없습니다. value가length보다 짧으면 그대로 돌려줍니다. 말줄임표는 붙지 않습니다.- 그리는 데 쓰는 글꼴에 기본값인
'…'가 없다면'...'나'[cut]'처럼ellipsis를 직접 넘기세요.