杂记 › 资源分享 › 千字文有一千个不重字吗:字数统计实测正文 996、真字 1000、去重 995

千字文有一千个不重字吗:字数统计实测正文 996、真字 1000、去重 995

站内简体《千字文》TXT整档喂进字数统计,total报1528、中文字数1132;正文真汉字实测1000,页面口径只996,去重995,空格与行数另有两笔盲区账。

疑问是从资源页自己的 FAQ 开始的

那份简体 TXT 的详情页里自己立了一个问题:「Q:千字文真的有一千个不重复的字吗?」答案写的是「传统说法是约一千个不重复的字」,并注明「实际统计会因版本和用字标准不同而有差异」。这句自述就能量:「约一千」是几个、「不重复」按什么算。我把它取下来当被测文本,逐格读回、逐行追差值。

实测 4212 字节、139 物理行、无 BOM、LF 行尾、末行带换行;《千字文》的结构是 L1 标题行、L2 空行、L3 到 L127 正文 125 行、L128 空行、L129 到 L139 说明块,正文 122 行是「四字+全角空格+四字」,另 3 行(L93、L102、L109)夹着范围外的字。字数统计那页只有一个 textarea 和八张统计卡,countText() 里就八个表达式、零按钮、零网络调用。

整档跑一遍:八格各报什么

整份文件连标题行与说明块一起粘进去读回八格;再单独跑 L3 到 L127 的正文切片。

格子整档诗正文
总字符数15281251
中文字数1132996
英文单词数80
数字个数20
行数140125
段落数31
空格数40
去空格字符数12601002

一千个不重字吗:1000、996、995、991

125 行乘每行 8 字是 1000,可那只是排版账;把用字范围放宽逐字重数,正文真汉字实测恰 1000。页面那条 [\u4e00-\u9fa5]([一-龥],U+4E00 到 U+9FA5)在同一份正文上只报 996,差 4。去重是第二笔账:1000 去重剩 995,差的 5 恰是各出现 2 次的 5 种字——并(L79、L119)、发(L15、L21)、巨(L9、L82)、戚(L96、L105)、云(L7、L80)。这里只报次数;是否同一次归并得对照繁体底本,资源页自述本版未做学术校勘。两笔误差还会叠:按页面那条正则去重是 991。整档口径则是命中 1132、去重 1020,宽口径 1136、去重 1024。

诗正文(L3 到 L127)汉字数的四种问法 宽范围重数 1000 页面 [一-龥] 996 宽范围去重 995 页面口径去重 991

图 1:四个数各属一种问法

范围外的 4 个字

漏抓清单只有 4 项,且都能定位:L109「弦歌酒䜩 接杯举觞」里的 䜩 U+4729、L93「两䟽见机 解组谁逼」里的 䟽 U+47FD,都在扩展 A(U+3400 到 4DBF);另两个同在 L102,码点 U+2CA0E 与 U+214DC,落在辅助平面,字形在本篇字符集里写不出来,只能给码点。另外,L102 那行在总字符数里按 11 计,典型诗句行是 9;整档 total 报 1528、按码点重数 1526,差的 2 就是这两个字各多占一格,正文口径的 nospace 1002 比 1000 多出的也是这 2。本文件没有字落在 U+9FA6 到 U+9FFF 之间,所以是范围没覆盖而非区间内漏数。

空格盲区:4 对 125

「空格数」的正则体里是一个字面量空格,即 U+0020:整档报的 4 个全在 L137 许可行,正文 125 行的贡献是 0,隔开诗句的 125 个全角空格 U+3000 一个也不进这格。两格互不相认:只喂两个 U+3000,空格数报 0、去空格字符数也报 0,因为 nospace 的 \s 认它。整档账闭合:1528 减 1260 等于 268,等于 139 个换行加 125 个 U+3000 加 4 个半角空格。

1528 减 1260 的 268 由三段拼成 换行 139 全角 125 半角 4 「空格数」只数半角 4 个

图 2:被减掉的 268 是三段拼的

行的账与段的账

lines 按换行切开数段:139 物理行报 140,末行带换行就多出 1 个空段;同一段正文不带末换行报 125,补一个换行立刻 126,一字未动。paras 先 trim 再按空行切:整档报 3,三块长度 5、1251、267 恰是标题行、正文、说明块,中文字数 3 加 996 加 133 等于整档的 1132;块内全是单换行,凑不出 \n\s*\n,说明块单独跑 paras 只有 1。

英文单词数 8 与数字个数 2 都来自文末

八个 token 是 https、zh、wikisource、org、wiki、CC、BY、SA,落在 L136 的网址与 L137 的许可行;num 是把「4.0」用 \d+ 拆成 4 和 0。「CC BY-SA 4.0」单独喂进去实测 12 个字符、en 3、num 2、空格 2。诗正文那 125 行的 en 与 num 全 0,这两格报的与诗本身无关。

逐行求和与整档一次:五条相等,三条失真

按行拆开逐段喂、再对八格求和,与整档一次对照:total 求和 1389 对 1528,少 139——换行被切走,不再属于任何一段;lines 是 137 对 140;paras 是 137 对 3,逐段时每段自成一段落,虚增 134。而 1132、8、2、4、1260 这五个字段两种算法完全相等,因为命中从不跨行。

放大 1000 倍跑三次

整份复制 1000 次是 4212000 字节,countText 完整跑 3 次耗时 134.4374、75.1041、75.9508 毫秒,首次含热身,后两次稳在 75;拆开计时,汉字正则单独 59.5327 毫秒、去空格替换单独 7.0938 毫秒。大文本八格照旧报全,行数 139001、段落数 2001;原整档单跑只有 0.1291 毫秒。这些都是 Node 侧对逐字摘出的函数计的时,浏览器端刷新耗时与 textarea 的行数上限行为都未实测。

页面文案与八个表达式

介绍文案与小贴士逐条对代码判:11 条判定,3 条一致、3 条冲突、5 条部分一致。冲突三条正压在靶子上——「中文字数:精确统计中文汉字数量」对本文件漏 4 个真汉字,真值 1000 对页面 996;「数字个数:统计文本中的数字字符数」数的是连续串,「4.0」报 2;介绍列表里的「标点符号」在八个字段里根本没有对应格子。「英文单词按空格分词」也名不符实:abc123def 报 0、don't 报 2。

FAQ

Q:这份《千字文》到底有多少字?

看口径:整档 1528 与 1132;正文切片 1251 与 996;放宽范围重数 1000、去重 995;页面口径去重 991。「约一千」这句要靠这四个数一起解释。

Q:空格数为什么只有 4,诗行里明明有 125 个空格?

半角那 4 个全在文末许可行;诗行之间的是全角空格 U+3000,只认 U+0020 的正则数不到,而 nospace 的 \s 反倒把这 125 个连同 139 个换行一起减掉。

Q:并、发、巨、戚、云 算重字吗?要不要排个榜?

在这份正文里它们各出现 2 次,去重因此是 995 而不是 1000;本篇只交代次数,不排榜,也不做繁简归并的断言。字数一般怎么数另有旧文 论文、文案字数怎么数。

📎 相关文章

120 回的《红楼梦》整本贴进文本频率统计,榜首为什么是 59260 次的逗号 2026-11-04 SOS 只有 9 个音,整句字母表要 104 个音:摩斯码的节奏怎么算出来 2026-10-21 转盘上写「权重 30」是几成机会?扇区角度、放回与不放回的两种抽法 2026-10-21 渐变底上的白字为什么总看不清?把 WCAG 对比度逐个色标算一遍 2026-10-21 老照片放大就发糊?画质提升能救回多少细节 2026-10-15