字符截断

4 阅读1分钟

/**

  • 返回 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; }