計算出現次數的意思是,找出特定字串在一段較大文字中出現了幾次,並回報總次數以及每個相符項目的精確起始位置。計算出現次數工具完全在瀏覽器中執行這項搜尋,最多可接受 1,000,000 個字元的來源文字,並以字面方式處理搜尋字串——句點對應句點、星號對應星號,沒有任何規則表示式語法需要跳脫,也沒有任何東西需要學習。您可以在區分大小寫與不區分大小寫的比對之間切換,並另外決定是否允許相符項目重疊,因此同樣的輸入會根據您打算如何使用結果而產生不同的計數。工具回報的總數不會被截斷,並列出前 100 個以零為起始的起始位置,即使結果有數十萬個相符項目,依然能保持可讀性。由於比對、計數與位置收集都在本機進行,貼上的文字與搜尋字串永遠不會離開您的分頁,這使得該工具適合用於記錄檔、草稿手稿、原始碼,以及任何您不希望上傳的其他文字。

字面比對與樣式搜尋的差異
出現次數計算工具回答一個單一的問題:這個完全相同的子字串在該段文字中出現了幾次?當比對為字面比對時,答案僅取決於字元本身,而不取決於任何樣式語言。搜尋字面字串 file.txt 會找出這九個字元依序出現的每一次,並且不會將句點視為萬用字元,也不會將其視為代表「任意字元」的符號。這就是字面計數工具在日常工作中(例如檢查重複字詞、分隔符號、記錄標記、識別碼、標點符號以及簡短程式碼片段)表現得可預期的原因。
由於該工具不會編譯規則表示式,因此無效的樣式永遠不會中斷搜尋,使用者也永遠不需要跳脫標點符號。搜尋字串中的中括號會對應來源中的中括號,左括號會對應左括號,反斜線會對應反斜線。不區分大小寫選項會在比對之前,透過標準的 String toLocaleLowerCase 行為,對兩端套用英文語系的小寫轉換,這是一種實用的捷徑,而不是完整的語言排序引擎。特定語系的等價規則、組合與分解 Unicode 形式之間的正規化、變音符號摺疊以及特定文字系統的大小寫規則並不會被推斷出來,因此如果您的文字依賴這些特性,字面計數工具就不適用。
如何計算文字中的出現次數
- 將您要搜尋的來源文字貼上或輸入到主要輸入欄位。您最多可輸入一百萬個字元;該工具不會修剪、重新排版或以其他方式改寫您提供的內容。
- 在搜尋欄位中輸入要尋找的字面文字。搜尋字串可包含空格、Tab 鍵、貼到欄位中的換行、表情符號,或最多 1,000 個字元的普通 Unicode 文字,而空白的搜尋字串會被拒絕,因為它會在每個邊界都相符,並產生模稜兩可的結果。
- 選擇比對是否區分大小寫,然後選擇是否允許相符項目重疊。編輯任何輸入或選項都會清除舊的輸出,以免過時的計數被誤認為是當下的設定。
- 計算相符項目並檢視結果。輸出會顯示總次數——即使達到數十萬個也不會被截斷——以及在原始來源文字中每個相符項目的前 100 個以零為起始的起始位置。
重疊與非重疊的相符項目
重疊設定會改變搜尋在一次相符後如何前進,因此會改變任何可以包含自身的搜尋字串的計數。非重疊模式會前進一整個相符的搜尋字串長度,因此它反映的是簡單的字面取代作業會進行多少次取代。重疊模式會在一次相符後前進一個 JavaScript 字串單位,這在您希望計算搜尋字串每種可能位置的序列分析中很有用。
| 模式 | 前進方式 | 典型用途 | 來源:aaaa,搜尋:aa |
|---|---|---|---|
| 非重疊 | 完整搜尋字串長度 | 取代規劃、重複字詞稽核 | 總計 2,位置 0 與 2 |
| 重疊 | 一個字串單位 | 序列分析、子字串偵測 | 總計 3,位置 0、1 與 2 |
上面的範例刻意使用極短的字串,以便可以用手動方式驗證結果。非重疊模式檢視來源 aaaa,會在位置 0 找到 aa,接著前進越過這兩個相符的字元,然後在位置 2 找到下一個 aa,總共兩次相符。重疊模式會在位置 0 找到 aa,前進一個字元,在位置 1 找到另一個 aa,再前進一個字元,然後在位置 2 找到第三個 aa,總共三次相符。這兩種詮釋在日常計數工作中都很常見,該工具將兩者都提供為明確的選項,而不是根據輸入靜默切換。
正確讀取位置編號
計算出現次數所回報的起始位置是以零為起始的 JavaScript 字串位移,意思是來源的第一個字元位於位置 0,第二個字元位於位置 1,依此類推。對於大多數普通的英文文字,每個可見字元佔用一個位移,因此位置編號與您用手指計算的結果一致。在內部,搜尋會從當前位移開始,重複執行標準的 String indexOf 查找,直到找不到進一步的相符為止,在保留每次計數的同時,僅顯示前 100 個原始字串位移。
某些字元會佔用兩個位移而非一個。位於 Unicode 基本多文種平面之外的字元——大多數的表情符號、許多歷史文字系統以及特定的數學符號——在 JavaScript 中是以代理對編碼,因此每個這類字元會佔用兩個 UTF-16 程式碼單位。因此您看到的位置編號描述的是程式碼單位的位移,而不是使用者感知到的字素索引。如果您將位置複製回自己的 JavaScript 程式碼,它會落在相同的字元上;如果您將其複製回具有字素感知能力的應用程式,則可能需要針對文字中較早出現的每個表情符號調整一個位移。
當零才是正確答案時
零結果是有效的答案,該工具僅會在旁邊顯示沒有位置。計數回傳為零有幾個常見的原因。最簡單的原因是搜尋字串根本未出現在來源中,當識別碼、標記或詞彙確實不存在時,這正是應該發生的情況。即使字母看起來相同,大小寫敏感度仍可能隱藏相符項目,特別是當來源在一行使用 ERROR、下一行使用 Error,而比對模式設定為區分大小寫時。當搜尋字串比剩餘來源更長時,自然會回傳零,因為沒有空間可以容納該樣式。
搜尋欄位中的空白字元也可能產生靜默的零結果,因為 error 結尾的空格屬於字面樣式的一部分,而非裝飾。由於該工具永遠不會上傳您的文字、不留下任何帳號狀態,並在您編輯任一輸入時立即清除其輸出,因此零結果與其他任何計數具有相同的分量。請將其視為證據而非錯誤,並在斷定來源有誤之前,重新檢查大小寫敏感度設定、重疊設定,以及搜尋欄位的確切內容。
為工作挑選合適的計數工具
計算出現次數回答一個特定的問題,並貼近其來源,使答案可供稽核。本站上其他文字計數工具回答相關的問題,下表說明何時應該切換工具。
| 工具 | 回答的問題 | 回傳的內容 |
|---|---|---|
| 計算出現次數 | 這個字面字串出現了幾次? | 總數加上前 100 個以零為起始的起始位置 |
| 字數計算機 | 這段文字包含多少個字詞、字元、句子以及閱讀分鐘數? | 在您輸入時,整段文字的批次計數 |
| 尋找並取代 | 如何將每個字面相符項目變更為其他內容? | 使用相同字面、無需跳脫的比對規則所產生的編輯後文字 |
| 文字差異比較工具 | 文字的兩個版本之間有哪些行不同? | 新增、刪除與未變更的行集合,而不是頻率計數 |
當您已經知道要統計的子字串,並且想要總數與可重現的起始位移時,請使用計算出現次數。當問題是某段文字有多大、而且您心中沒有特定樣式時,請使用字數計算機。當您實際上想要編輯相符項目而非計算它們時,請使用尋找並取代,因為它使用相同的字面、無需跳脫的比對規則,並且不會以規則表示式語法讓您感到意外。當問題是兩個檔案是否相同,而不是某個字串出現的頻率時,請使用文字差異比較工具。
如果您正在權衡選項,將欄位列轉換為逗號分隔的字串對此有詳細說明。
如果您正在權衡選項,計算出現次數的替代方案:用於文字的本機瀏覽器工具對此有詳細說明。