工具实现揭秘文本工具
字数统计是怎么实现的
字数/字符数/词数/行段落的统计口径与实现——为什么中文统计比英文难
TL;DR:字数统计实时给出字数、字符数、词数、行数与段落数四个口径。它最大的实现难点不在「数数」,而在中文没有空格分词——本篇讲各口径怎么定义、怎么数才对。
⏱️ 30 秒上手
- 打开 tools.guangmin.top/tools/text_stats;
- 粘贴任意文本,四个口径实时刷新;
- 需要哪个口径看哪个,无需任何点击。
🔧 它是怎么实现的
四个口径的定义
| 口径 | 统计规则 | 典型用途 |
|---|---|---|
| 字数 | 汉字每个算 1,英文单词每个算 1,数字串算 1 | 论文字数要求、稿费字数 |
| 字符数 | 逐字符计数(含标点、空格可选) | 平台字数上限(如 500 字限制) |
| 词数 | 按空格切分的英文单词数 | 英文写作 |
| 行/段落 | 换行符分段 | 排版检查 |
中文统计的难点
英文词之间有空格,split(' ') 就能数词;中文的「字」必须逐字符判断。实现上用 Unicode 判断(/[\u4e00-\u9fa5]/ 范围匹配汉字),中英混排时两套口径并行统计再相加:
为什么能做到实时
全部统计是 O(n) 的线性扫描(一遍从头读到尾),十万字文本也是毫秒级——所以和所有文本工具一样做成输入即算,没有统计按钮。
📏 边界与限制
| 项 | 说明 |
|---|---|
| 统计口径 | 见上表;「字数」是中文习惯口径(汉字+英文词),非字符数 |
| Emoji | 按字符数计,可能占多个编码位 |
| 数据 | 全程浏览器内存,关闭页面即消失 |