Skip to content

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가 말줄임표 자체보다 짧으면, 넘쳐 나는 대신 말줄임표 쪽이 잘립니다.

참고

  1. UTF-16 코드 단위가 아니라 유니코드 코드 포인트로 자릅니다. 무심히 value.slice(i)를 쓰면 서러게이트 쌍 한가운데에 떨어질 수 있습니다. 기본 다국어 평면 밖의 문자(이모지, 일부 CJK 확장 문자)는 UTF-16으로 두 단위라, 말줄임표 옆에 짝 없는 서러게이트가 남아 깨진 글자로 보입니다. truncate는 코드 포인트 단위로 훑으므로 여러 단위짜리 문자가 쪼개지는 일이 없습니다.
  2. valuelength보다 짧으면 그대로 돌려줍니다. 말줄임표는 붙지 않습니다.
  3. 그리는 데 쓰는 글꼴에 기본값인 '…'가 없다면 '...''[cut]'처럼 ellipsis를 직접 넘기세요.

MIT 라이선스로 배포됩니다.