文本截断
按字符数、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文本截断截取字符串按字节截断省略号不切断单词