Microsoft Word 在狀態列顯示的行數是一種版面估計值,只要您變更視窗寬度、縮放比例、行距,甚至文件主題,這個數字就會重新計算。這就是為什麼同一份 Word 文件在兩次儲存之間,行數可能會相差好幾列,即使您一個字都沒編輯。要可靠地計算 Word 的行數,應該去計算底層文字中實際的換行字元——也就是分隔一個邏輯行與下一個邏輯行的 LF、CRLF 或 CR 字元——而不是 Word 依目前版面決定要呈現的視覺列數。以瀏覽器為基礎的行數計算工具正是這樣運作:把您的文字貼進去,讀取四個穩定的統計數字(總行數、非空白行、空白或僅含空白字元的行,以及以 Unicode 碼點測量的最長一行),並依據一組明確列出的規則來比對結果,讓您知道這個數字是如何產生的。這個方法適用於純文字、原始程式碼、紀錄檔、逐字稿、CSV 匯出檔,以及從應用程式複製出來的 Word 文件本文,而且完全不需要把您的內容上傳到遠端伺服器。

Word 的狀態列實際上在計算什麼
Word 的狀態列會顯示「行數:」的計數,但它並不是換行字元的數量。它是當前版面為了呈現頁面所需要的視覺列數,而該版面取決於行距(單行、1.5 倍、雙倍、「至少」、「精確」)、邊界後文字區域的寬度、孤行寡行控制、標題是否使用「與下段同頁」、文件的縮放比例,甚至連校對底線是否顯示都會影響。兩份換行字元完全相同的檔案,在 Word 中可能會顯示不同的行數,只是因為其中一份使用 11 點的 Calibri,另一份使用 12 點的 Times New Roman。
同樣的邏輯也說明了為什麼同一份文件內的計數會變動。當您從「整頁模式」切換到「草稿模式」時,Word 會使用不同的版面指標,於是數字就改變了。把視窗縮窄,行數通常會上升,因為更多行會被換行;把視窗拉寬,行數則會下降。新增一個註腳,含有註腳標記的那一列會依據您從哪個選單路徑開啟計數對話框,而以不同的方式計算。
如果您需要一個不會因格式變動而改變的數字,狀態列無法提供。您必須改為計算換行字元,這代表要把文字從 Word 的版面引擎中抽取出來。
Word 的行數在沒有任何文字變動時仍會變動的情況
一個常見的困擾是:您打開一份五十頁的報告,狀態列顯示 1,847 行,您稍微調整某一段的行距,同一份文件現在卻回報 1,851 行。本文內容完全沒有改變。Word 的計數不穩定的情境包括:
- 文件使用左右對齊文字,而且每一段的最後一行會隨欄寬變動而重新排版。
- 您在「整頁模式」、「草稿模式」和「網頁版模式」之間切換,每一種模式都使用不同的指標。
- 有表格或文字方塊內嵌於本文之中;Word 會把它所呈現的列與周圍的散文分開計算。
- 頁首、頁尾、註腳、註尾與文字方塊的內容,在某些選單路徑下會被計入,在其他路徑下則不會,因此兩個不同的對話框可能顯示兩個不同的總數。
- 追蹤修訂的對話氣球在一種檢視中可見,在另一種檢視中則隱藏,這會改變 Word 對所需繪製列數的計算。
凡是需要在多份文件之間對齊的情境——例如規定「不超過 X 行」的劇本提交、有行數上限的法院文件、逐行比對輸出的程式碼審查、以原始行數計價的翻譯專案——應用程式內的數字都不宜信賴。
使用瀏覽器工具在 Word 中計算行數
- 開啟 Word 文件,選取您要計算的本文。在 Windows 上按 Ctrl+A,或在 Mac 上按 ⌘+A,以選取文件中的全部內容。
- 在 Windows 上按 Ctrl+C,或在 Mac 上按 ⌘+C,將選取範圍複製到剪貼簿。
- 在新分頁中開啟行數計算工具。
- 使用 Ctrl+V 或 ⌘+V 將文字貼到編輯器中。四個統計數字會立即更新——沒有提交按鈕。
- 從編輯器下方的面板讀取「總行數」、「非空白行」、「空白或僅含空白字元的行」,以及「最長一行(以碼點為單位)」。
- 如果需要重新開始,請按「清除」以清空輸入,並將每個統計數字重設為零。
文字永遠不會離開您的瀏覽器。分析在本地端執行,無需帳號,編輯器下方還有一個計數器會顯示 1,000,000 個 UTF-16 碼元輸入額度還剩多少。
如何解讀計算工具回報的四個數字
這個工具會回傳四個數字,彼此之間的關係本身就是一個有用的交叉檢查。
| 統計項目 | 計算內容 |
|---|---|
| 總行數 | 將輸入以 LF、CRLF 和單獨的 CR 分割後所產生的段落數,其中 CRLF 視為單一邊界。完全空的輸入是唯一會回傳零的情況。 |
| 非空白行 | 在兩端的 Unicode 空白字元被修剪後,仍至少含有一個非空白字元的行。 |
| 空白或僅含空白字元的行 | 不含任何內容,或僅含修剪後為空白的空格與定位點的行。內容為「 a 」的行屬於非空白行;內容為「 」的行則屬於空白行。 |
| 最長一行(以碼點為單位) | 最長段落的長度,以 Unicode 碼點為測量單位,而不是視覺欄位、位元組或 UTF-16 碼元。 |
總行數應該永遠等於非空白行加上空白行。如果這三個數字加不起來,那麼在您開始信任「最長一行」這個指標之前,就已經有問題了。
以淺白語言說明行數計算工具的規則
由於行數計算在預設情況下定義不清,這個工具明確地定義了它的規則。下列參考表顯示常見的輸入是如何被分類的。
| 輸入 | 總數 | 非空白 | 空白 |
|---|---|---|---|
| (空) | 0 | 0 | 0 |
| alpha | 1 | 1 | 0 |
| alpha 後接一個 LF | 2 | 1 | 1 |
| alpha 後接 CRLF | 2 | 1 | 1 |
| 單獨一個 CRLF | 2 | 0 | 2 |
| a、空白行、b (a\n\nb) | 3 | 2 | 1 |
CRLF 永遠只是一個邊界,絕不會被視為兩個,因此在 Windows 上儲存的文件,並不會因為每一半被分開計算而膨脹總行數。混用的行尾——有些是 LF、有些是 CRLF、有些是單獨的 CR——在同一份輸入中都可以接受,當文字曾在 Unix、Windows、傳統 Mac、終端機與剪貼簿環境之間流通時,這一點很重要。
結尾的換行一定會產生最後一個空白段落。沒有換行的「alpha」是 1 行非空白行;「alpha」後接一個 LF 則是 2 行(alpha 行加上結尾的空白行)。本計算工具遵循可見的分割結構,不會依據最後一行是否包含文字而悄悄地把最後一個空白段落去掉。
兩個工具結果不一致的常見情境
當本行數計算工具與其他工具回傳不同的總數時,原因幾乎一定是下列其中之一:
- 另一個工具會省略最後一個空白段落。許多 Unix 公用程式(包括 wc -l)在檔案以換行結尾時,會比本計算工具少回報 1 行。這兩種行為都合理,只是規則不同。
- 另一個工具計算的是位元組、字元或字素簇(grapheme clusters),而不是碼點。例如 😀 這類位於輔助平面的表情符號佔兩個 UTF-16 碼元,但在計算「最長一行」時算作 1 個碼點。又如「e」後接組合用尖音符號這類分解式的重音字母,雖然會呈現為單一可見字形,卻會計為 2 個碼點。
- 另一個工具在計算前先將定位點展開為固定的欄寬。本行數計算工具不會展開定位點;每一個定位點字元都剛好算 1 個碼點。
- 文字在其生命週期中曾被正規化(NFC 與 NFD)。本計算工具不會對 Unicode 進行正規化,因此同一段可見文字若處於兩種不同的正規化形式,可能會有不同的碼點計數。
若您需要同一份來源文字的單字與字元總數,請使用字數計算工具;它是專為那些指標設計的,並以同樣的純本地端方式處理文字。本行數計算工具刻意不計算單字、句子、位元組、視覺欄位、段落,或在軟體內自動換行的顯示列——在 Word 編輯器視窗內視覺上換行的一長段文字,只要文字中沒有真正的 LF、CRLF 或 CR 分隔符,仍然算是 1 個邏輯行。
延伸閱讀:3 步驟在 Word 中隨機排序清單。
延伸閱讀:不用巨集在 MS Word 中將數字轉成英文單字。