反向詞彙搜尋在應用於文字編輯時,會將一段文字中的詞彙順序顛倒,使最後一個詞變成第一個,倒數第二個變成第二個,依此類推,同時詞彙之間的間距保持原樣不變。在此情境下,這個操作與字典或同義詞典毫無關係;它是對字串中標記順序的一種機械式轉換,概念等同於把「one two three」變成「three two one」,而不改變任何詞彙內部的字母。緊貼詞彙的標點符號會與該詞彙一起移動,因為這個工具並不會解讀文法;它只區分空白字元與非空白字元。結果會得到一個詞彙順序已被顛倒、但空格、Tab 與換行等結構以標記為單位完整保留的字串。
對於主要疑問是「我要如何顛倒文字中的詞彙順序」的人,答案是使用 反向詞彙 工具。你貼上文字段落,選擇反向詞彙順序選項,然後複製新的字串。工具會回報有多少標記被顛倒,並顯示精確的輸出,讓你在貼到任何地方之前可以先驗證結果。處理過程完全在瀏覽器中進行,這代表你的文字不會被上傳,且轉換是確定性的:相同的輸入永遠會產生相同的輸出。最大可接受的輸入為 1,000,000 個 UTF-16 程式碼單位;若輸入僅由空白字元組成或為空,則會被拒絕,因為沒有標記可以顛倒。

對文字而言「反向詞彙搜尋」的意義
「反向詞彙搜尋」這個詞至少被用於兩種不同的任務,在開始之前先加以區分會有所幫助。在字典與寫作應用程式中,反向詞彙搜尋通常意指透過描述詞義來查詢一個詞,與一般「輸入詞彙、查看定義」的查詢相反。該任務需透過反向字典或同義詞典解決,而非透過字串轉換。
這個詞的另一種常見用法則更為字面化:取一段文字並顛倒其詞彙順序。這正是反向詞彙工具所做的事情。它將每一段連續的非空白字元視為單一標記,依序收集這些標記,顛倒該集合後,再把顛倒後的標記放回原本的空白字元樣式中。空格、Tab 與換行停留在原處;只有詞彙彼此滑動換位。
若你是想顛倒句子、清單、程式碼註解或多行區塊中的詞彙順序,那麼你來對地方了。若你是想從定義反查一個詞,則需要不同類型的工具,因為顛倒字串中的詞彙順序對詞彙查詢並沒有幫助。
如何逐步顛倒詞彙順序
在任何文字中顛倒詞彙順序的最快方法是使用反向詞彙工具。整個過程簡單明瞭,並會產生可讓你直接複製到另一份文件、聊天視窗或程式碼編輯器中的確定性輸出。
- 將需要顛倒非空白標記順序的文字貼入輸入欄位。文字可以是單行、一個句子,或多行區塊,且可以包含 Tab 與混合的換行符號。
- 選擇反向詞彙順序。工具會將輸入進行標記化,顛倒非空白標記,並透過原本的空白字元樣式把它們替換回去。
- 驗證顛倒後的標記,並確認原本的空格、Tab 與換行保持在原位。工具會回報顛倒標記的數量並顯示輸出,讓你在複製前可以先行檢視。
若你需要一次顛倒超過 1,000,000 個 UTF-16 程式碼單位,請先使用文字檔分割工具將輸入切分,或分批貼上各段文字。若輸入為空或僅包含空白字元,工具會予以拒絕,因為沒有標記可以顛倒。單一詞彙是有效的無操作:輸出等於輸入,計數為一。
反向過程中什麼算是一個詞
反向詞彙工具使用刻意保持透明的「詞」定義:它是指任何一段最大連續的非空白字元序列,與語言無關。標記從非空白字元開始之處起算,並在下一個空白邊界結束,因此中間沒有空格的任何附加內容都屬於同一個標記。
這個定義會產生若干實際後果,下表加以說明:
| 輸入 | 識別出的標記 | 顛倒後輸出 |
|---|---|---|
| one two three | one, two, three | three two one |
| hello, brave world! | hello, brave world! | world! brave hello, |
| 12.5 + 7 = 19.5 | 12.5, +, 7, =, 19.5 | 19.5 = 7 + 12.5 |
| cat 🐱 dog | cat, 🐱, dog | dog 🐱 cat |
附加於詞彙的標點會隨之移動。在「hello, brave world!」中,逗號會緊黏著「hello」,驚嘆號會緊黏著「world」,因此結果為「world! brave hello,」。字母、數字、貨幣符號、數學運算子與表情符號在沒有空白分隔時,都會被視為其所屬標記的一部分。Unicode 字母與表情符號不需進行字典查詢,因為標記化工具僅區分空白與非空白字元;你可以在 MDN 正規表示式字元類別參考 中確認其底層行為。
對於通常不以空格分隔詞彙的書寫系統(例如中文、日文或泰文),整行或整段phrase可能會形成單一標記,因為此工具並不會套用語言特有的分段方式。若你需要針對這些語言進行詞層級的反向,必須在反向之前先於詞彙之間插入空白。
空白字元如何保持在原位
關於反向詞彙搜尋,最容易犯錯的其中一個假設是空白字元會在過程中被正規化。反向詞彙工具的做法恰恰相反:每一段空白都會保留在其原本的標記位置。一個空格保持一個空格,兩個空格保持兩個空格,Tab 保持 Tab,CRLF、CR 與 LF 換行則完全停留在輸入中原本出現的位置。
舉例而言,輸入「one␣␣two\nthree」(一個詞、兩個空格、詞 two、一個換行、詞 three)會變成「three␣␣two\none」。兩個空格與換行不會被合併、刪除或轉換;它們仍維持相對於新標記順序的相同位置。這讓以肉眼驗證輸出變得直觀,並能避免無意間的格式化工具隱藏原始結構。
由於空白位置保持固定而詞彙移動,當標記長度差異極大時,視覺上的排列可能會令人意外。原本較短的詞被移至較長的最終位置時,工具並不會自動補齊欄位,瀏覽器的一般換行在畫面上也可能改變。視覺換行並非插入的換行;底層空白字元仍是輸入所提供的那些。若你需要檢查差異或處理標記順序會影響行為的結構化格式,請將顛倒後的輸出貼到能顯示空白字元的純文字編輯器中,例如 純文字轉換器 或 行數計數器。
反向詞彙順序何時有用,以及它無法做到的事
反向詞彙順序適用於一小組明確界定的工作:
- 語言學習或語言學作業中的詞序練習。
- 為笑話、標題或風格化社群貼文所進行的趣味措辭。
- 用於解析器的測試 fixture,用以確認消費者不會預設詞彙順序。
- 提示詞實驗,你想以不同順序提供模型相同的標記。
- 檢查字串中標記順序與字元順序的差異。
它並不適用於人們有時誤以為它能涵蓋的更大範疇任務。這個工具不會顛倒每個標記內部的字元,因此「one two three」會變成「three two one」,而非鏡像拼寫。若需字元層級的反向,請使用 文字反向器。它不會把句子順序當作語意單位來反向、不會剖析子句,也不會依語言文法移動標點。它不是語言翻譯器、RTL 排版轉換器、雙向文字清理工具、字母重組產生器、句子文法校正器或無障礙檢查工具。混用由左至右與由右至左書寫方向的文字,可能需要專門支援雙向機制的編輯器進行視覺檢查,因為僅顛倒標記順序並無法處理雙向渲染規則。
這項轉換是局部且確定性的,但當詞彙順序改變時,意義並不會被保留。請勿將產生的文字當作翻譯結果使用,也別假設它在文法上仍然有效。在發布或將其插入至程式碼、標記、指令或標記順序會影響行為的結構化格式之前,請務必先檢視輸出。以下是會與不會改變之處的快速摘要:
| 輸入的面向 | 結果 |
|---|---|
| 每個詞內部的字母順序 | 保持不變 |
| 詞彙順序 | 顛倒 |
| 空格、Tab 與換行 | 保留在原本位置 |
| 句子意義或文法 | 通常會喪失 |
| 雙向文字渲染 | 不予處理 |
意外輸出結果的快速疑難排解
有幾個意外情況經常出現,值得直接說明。如果畫面上的輸出看起來很奇怪,請記住視覺上的換行並不是插入的換行字元;底層的空白字元完全就是你貼上的內容,而當一個較短的字被放進較長的位置時,可能會改變瀏覽器的換行方式,但不會改變實際的字串。如果你的 emoji 保持在一起,那就是正確的行為:沒有空白的連續 emoji 序列是一個 token,而組合用記號會附加在它們周圍的 token 上。
如果工具拒絕了你的輸入,最常見的原因是輸入為空或僅由空白組成,這兩種情況都會刻意被拒絕,因為沒有 token 可以反轉。如果回報的數量是 1,而且輸出等於輸入,表示你貼上了一個非空白的 token,這是一個確定性的無操作。如果你在看到先前的結果後又輸入了內容,舊的反轉結果會自動清除,以免被誤認為是目前輸出。如果你貼上的內容接近 1,000,000 個 UTF-16 程式碼單位的上限,剛好等於上限會被接受,而超過一個程式碼單位則會產生可見的錯誤且不會有部分結果,這能讓 token 陣列與輸出的呈現保持可預測。
對於常與反向文字搜尋一起使用的相關功能,隨機字詞產生器在你需要新的輸入來進行反轉時很實用,而文字反轉器則在你真正需要鏡像拼字時處理字元層級的反轉。如果你需要在整份名單中交換姓氏和名字,姓名順序交換器就是專門處理這項工作的工具,並且不會更動無法分割的行。
相關閱讀:用正確的方式在 Word 中檢查可讀性分數。
相關閱讀:在瀏覽器中免費製作文字雲。