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/someone/work/…همان بخشی است که خواننده از پیش میداند و…/src/utils/str.tsهمان بخشی که به آن نیاز دارد.'middle'هر دو سر را نگه میدارد؛ برای شناسههایی که سر و دنبالهشان معنا دارد، مانند یک درهم یا شمارهٔ حساب.
بازگشت
string؛ هرگز بلندتر از length نمیشود. اگر length از خودِ سهنقطه کوتاهتر باشد، بهجای سرریز، سهنقطه کوتاه میشود.
یادداشتها
- برش بر پایهٔ نقطهکدهای یونیکد است، نه واحدهای UTF-16.
value.slice(i)ِ سادهدلانه میتواند وسط یک جفت جانشین بیفتد: هر نویسهٔ بیرون از صفحهٔ پایهٔ چندزبانی (ایموجی، برخی نویسههای گسترش CJK) دو واحد UTF-16 است و کنار سهنقطه یک جانشین بیقرین به جا میگذارد که به شکل نویسههای درهم دیده میشود.truncateبهجای آن روی نقطهکدها پیش میرود، پس نویسههای چندواحدی هرگز شکافته نمیشوند. valueِ کوتاهتر ازlengthدستنخورده برمیگردد و سهنقطهای افزوده نمیشود.- اگر نویسهٔ پیشفرض
'…'در قلمی که با آن ترسیم میکنید نباشد،ellipsisدلخواه خود را بدهید (مثلاً'...'یا'[cut]').