/**
- 返回 Unicode 字符长度,用于解析输入字符长度
- '👨'.length === 2
- getUnicodeLength('👨') === 1
- @param str
- @returns */ export function getUnicodeLength(str?: string): number { return [...(str ?? '')].length; }
/**
- 按 Unicode 字符截取字符串(支持 emoji)
- @param str 原字符串
- @param start 起始位置
- @param end 结束位置
- @returns 截取后的字符串 */ export function substringWithEmoji(str: string, start: number, end: number): string { const codePoints = Array.from(str); return codePoints.slice(start, end).join(''); }
/**
- 截取字符串到指定长度(支持 emoji)
- @param str 原字符串
- @param endIdx 结束索引
- @returns 截取后的字符串 */ export function cutStringWithEmoji(str: string, endIdx: number): string { let res = ''; let idx = 0; for (const s of str) { idx = idx + 1; if (idx <= endIdx) { res += s; } } return res; }