跳到主内容
UniKit

文本截断

按字符数、UTF-8 字节数或词数截断文本,支持从开头、末尾或中间截断并加省略号,不切断英文单词与中文标点,按字节截断时不会切坏多字节字符,同时给出被删掉的长度。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

原始文本
计数单位
截断位置

截断结果

中文按字符处理,emoji 与组合字符都算一个字符。

输入文本后立即显示截断结果。

这个工具能做什么

  • 给列表页写摘要:把长描述截到 80 个字符再加省略号,长度可控、不会截出半个汉字。
  • 对接有长度限制的字段(数据库列、短信、meta description)时,先按 UTF-8 字节数验证截断结果是否超限。
  • 按字节截断时不会把汉字或 emoji 切成半个,避免出现「乱码问号」或渲染失败的字符。
  • 从中间截断保留头尾:把长 URL、长文件路径压成 https://example.com/…/report.pdf 这样的形式。

示例

输入

The quick brown fox jumps over the lazy dog

输出

The quick brown…

保留长度 20、按字符、从末尾截断:省略号占 1 个字符,而且默认不切断英文单词,所以结果停在 The quick brown(15 字符)+ 省略号。

常见问题

按字符截断会把 emoji 或拼音声调切坏吗?

不会。字符按 Unicode 字形簇计数:代理对(👍)、肤色修饰符(👍🏽)、组合字符(e + U+0301)以及 ZWJ 连字(👨‍👩‍👧)都算一个字符,截断点只会落在字形簇边界上。

按 UTF-8 字节数截断时结果为什么比我设定的短?

一个汉字占 3 字节、一个 emoji 可能占 4 字节,为了不把字符切成半个,工具只在字形簇边界停下,所以实际占用会小于等于上限。默认省略号也占 3 字节,需要精确到上限时取消「省略号占用长度」。

为什么结果比设定的长度短?

默认不切断英文单词:如果截断点落在一个单词中间,工具会退回到上一个空格。截断后行尾的空白也会去掉,所以结果可能短于上限。需要严格按长度截断时勾选「允许切断英文单词」。

「删除长度」是怎么算的?

删除长度按当前计数单位统计被丢掉的部分,不包含省略号。按字符截断时它就是被丢掉的字符数,按字节截断时是字节数,按词截断时是词数。原文没超过上限时删除长度为 0。

从中间截断会保留哪一段?

头部优先:先把保留长度的一半给开头,剩下的给结尾,例如保留 6 个字符的 abcdefghij 会得到 abc…ij。头尾两端同样遵守「不切断单词」的规则。

关键词:truncate textcut stringutf-8 byteslimit charactersellipsis文本截断截取字符串按字节截断省略号不切断单词

同类工具