雜記 › 資源分享 › 千字文有一千個不重字嗎:字數統計實測正文 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