ToolAct工具行動

字串反轉工具

快速反轉文本字串,支援多種反轉模式

輸入內容
字元數: 0
行數: 0
轉換結果
字元數: 0
行數: 0

選擇反轉方式

什麼是字串反轉?

字串反轉工具會把輸入文字依相反順序輸出。這個操作看似簡單,但真實文字並不總是只有 ASCII 字母:Unicode 字元、Emoji、組合音標、換行、空格以及從右到左書寫的文字,都可能因為字元計數方式不同而出現意外結果。它適合做文字實驗、回文檢查、小遊戲、字串除錯、教學示範,以及發現隱藏空格或後綴問題。需要注意的是,反轉字串不是加密,也不是安全的資料脫敏方式。輸入包含組合 Emoji 或一個可見字元由多個碼點組成時,應仔細檢查輸出是否符合預期。

使用方式

基本操作

  1. 在左側輸入框中輸入或貼上要反轉的文字
  2. 選擇反轉模式(全部反轉、反轉詞語等)
  3. 右側將自動顯示反轉後的結果
  4. 按「複製」複製結果,或按「交換」將結果作為輸入繼續操作

文字處理

  • 反轉純文字雖然簡單,但遇到表情符號、組合字元或由右至左書寫的文字時,可能會產生非預期的視覺結果。
  • 對於程式碼、URL 或結構化資料,請僅反轉目標片段,而非盲目反轉整段文字。

使用場景

在不同結構層級反轉文字可選擇完整字元反轉、詞序反轉、逐詞反轉、逐行反轉、行序反轉或句子順序反轉。輸入變更時輸出即時更新,並可將結果交換回輸入面板繼續操作。選擇正確的層級才能讓結果有意義:反轉詞序是打亂清單順序,而逐詞反轉則保留每個詞條不變,只翻轉其內部字母。
測試文字轉換與邊界情況字元層級模式使用展開語法(spread syntax),比簡單的位元組反轉更能正確處理許多 Unicode 字元。行和詞模式會根據所選轉換方式保留不同部分的空白字元,適合快速進行資料實驗。貼上空行、連續空格或尾部 Tab 等刁鑽輸入,可以看出每種模式如何處理不可見分隔符。
製作趣味或診斷用的文字變體將名稱、清單、句子或日誌行反轉,用於解謎遊戲、測試資料、排版檢查和人工比對。兩個面板上的行數和字數統計有助於確認轉換是否改變了結構還是僅改變了順序。純反轉操作中,輸入和輸出的這兩個計數應該一致,快速核對數字就是可靠的冒煙測試。
驗證包含 Emoji 序列的回文貼上一段文字,切換到字元層級反轉,檢查它正讀和反讀是否相同。基於展開語法的方法會將多碼點 Emoji 和組合音標作為單一單位處理,因此反轉後的彩虹旗字串仍然正確分組。真正的回文在一次「全部反轉」後應恢復原始形式,這是檢測看似對稱但實際不對稱輸入的快速方法。
支援字素感知的 Emoji 和 RTL 雙向文字對於像「👨‍👩‍👧」這樣由男性、ZWJ、女性、ZWJ、女孩組成的家庭 Emoji,簡單的位元組反轉會將序列拆分成破碎的字形。本工具以字素叢集為單位迭代,因此反轉後的家庭 Emoji 保持完整,不會變成「👧‍👩‍👨」。對於阿拉伯文或希伯來文輸入,渲染器會維持視覺上的從右到左順序;資料層面的字元反轉在螢幕上看起來仍然是反轉的,因此在判斷是否有問題之前,應以該語言的渲染結果來測試。

技術原理

字元層級的反轉使用展開語法:[...str].reverse().join('')。展開運算子以 Unicode 碼點序列迭代字串,能正確處理佔用兩個 UTF-16 碼元(代理對)的基本多文種平面之外的字元。天真的替代方案 str.split('').reverse().join('') 按碼元拆分,會破壞任何表情符號,如派對拉炮 🎉(U+1F389)、火箭 🚀(U+1F680)或任何 U+FFFF 以上的字元。 字素叢集增加了另一層複雜度。使用者可感知的字元,例如帶有組合尖音符號的 cafe(a + ◌́)、由兩個區域指示符組成的旗幟表情符號,或 ZWJ 連接的家庭表情符號 👨‍👩‍👧,實際上由多個碼點組成。碼點反轉仍然會重新排列各部分,因此家庭表情符號會變成三個獨立的人形,尖音符號會從基礎字母上脫落。使用 granularity: 'grapheme' 的 Intl.Segmenter 是符合標準的方式,用於迭代字素叢集並在反轉期間保持這些序列的完整性。 在操作層面,成本與片段數量呈 O(n) 線性關係,其中 n 是碼點數或字素數,取決於所選的分段方式。反轉兩次會得到原始字串,這就是該函式用於回文檢查的原理。對於 Unicode 密集的輸入,在反轉前進行 NFC 正規化(str.normalize('NFC'))可以在存在預組合形式時將基礎字元 + 組合序列折疊為預組合形式,減少輸出中的意外。阿拉伯文和希伯來文等從右到左的書寫系統以邏輯順序儲存但從右到左渲染,因此反轉後的阿拉伯文在螢幕上看起來仍然是反轉的。

  • 碼點反轉:[...str].reverse().join('') 按碼點迭代,保留 U+FFFF 以上的代理對(大多數表情符號)
  • 天真位元組陷阱:str.split('').reverse().join('') 按 UTF-16 碼元拆分,會破壞任何 U+FFFF 以上的字元
  • 字素叢集:Intl.Segmenter({ granularity: 'grapheme' }) 保持組合標記、旗幟序列和 ZWJ 表情符號 👨‍👩‍👧 的完整性
  • 詞層級反轉:split(/\s+/)、reverse、join(' ');保留每個詞的內部結構,僅翻轉順序
  • 複雜度:O(n),其中 n 為片段數量;反轉兩次回傳原始字串
  • NFC 正規化:str.normalize('NFC') 在反轉前將組合序列折疊為預組合形式(如果存在)
  • 雙向文字:阿拉伯文和希伯來文以邏輯順序儲存;渲染方向由瀏覽器的 BiDi 層處理,與資料層面的反轉無關

範例

反轉所有字元(基本)

模式:反轉全部
輸入:hello world
輸出:dlrow olleh

輸入:12345
輸出:54321

輸入:A man a plan a canal Panama
輸出:amanaP lanac a nalp a nam A

反轉單字 vs 反轉每個單字內部

輸入:The quick brown fox

模式:反轉單字(僅單字順序)
-> fox brown quick The

模式:反轉每個單字(單字內部字母)
-> ehT kciuq nworb xof

迴文檢查

輸入:racecar
反轉全部 -> racecar    (相同,是迴文)

輸入:level
反轉全部 -> level       (是迴文)

輸入:hello
反轉全部 -> olleh       (不是迴文)

Unicode 與表情符號的安全處理

輸入:cafe(e 上帶有結合銳音符)
簡易反轉:efac   (重音飄離原本的字母)
字素感知:efac   (重音保留在字母上)

輸入:family-emoji-ZWJ-sequence
簡易反轉:被拆成 3 個獨立的表情符號
本工具:保持整個叢集完整

反轉 log 檔案中的行順序

模式:反轉行順序
輸入:
  2026-06-10 09:00  startup
  2026-06-10 09:05  login ok
  2026-06-10 09:10  query slow

輸出(最新在前):
  2026-06-10 09:10  query slow
  2026-06-10 09:05  login ok
  2026-06-10 09:00  startup

常見問題

字串反轉是做什麼的?

把輸入的字元順序反過來:「hello」會變成「olleh」。可用於 ROT-13 之類的玩具加密、迴文檢查、產生鏡像顯示文字,或在教學中快速示範陣列操作。

Emoji 和中日韓文字會被正確反轉嗎?

多數中日韓字元和基本 Emoji 都能正確處理,因為頁面使用展開運算子([...text])來處理 UTF-16 代理對。但複合 Emoji 序列(如家庭 Emoji、國旗 Emoji、膚色組合)可能會在反轉時被打散,因為它們是由多個碼點組成、會被拆開。

組合附加符號的字元會怎麼處理?

由基本字母加上組合符號形成的字元(e + 銳音符 → é)會作為單一字位反轉。若輸入是分解形式,可能需要先做 Unicode 正規化——本頁面可能會在輸入時做 NFC 正規化處理。對於自然語言來說,無論哪種形式,視覺上的結果都正確。

字串反轉與鏡像翻轉有什麼不同?

反轉是字元順序的調換:「AB」變成「BA」。鏡像則是視覺上的翻轉:「AB」會顯示成 ⟨ƎA⟩,需要透過 CSS transform 或特殊字元才能達成。本頁面只負責反轉字元順序,並非像素鏡像。要做鏡像文字效果,請使用 CSS 的 scaleX(-1)。

會保留換行嗎?

預設會把整段輸入(包含換行符)一起反轉,原本最後一行會變成第一行。開啟「逐行反轉」選項後,就會在保留行序的前提下對每行內容反轉,適合對多行文字做視覺效果。

反轉後的文字一定能讀懂嗎?

由左至右閱讀的語言(英文、中文、日文)反轉後幾乎無法閱讀。由右至左閱讀的語言(阿拉伯文、希伯來文)看起來像勉強可讀,但其實也會壞掉,因為雙向文字演算法會與反轉互相打架。反轉主要是程式或謎題練習用的,並非真正實用的文字轉換。

我的文字會被上傳嗎?

不會。反轉在您的瀏覽器中執行,貼上的文字不會被傳送出去。