字串反轉工具
快速反轉文本字串,支援多種反轉模式
選擇反轉方式
什麼是字串反轉?
字串反轉工具會把輸入文字依相反順序輸出。這個操作看似簡單,但真實文字並不總是只有 ASCII 字母:Unicode 字元、Emoji、組合音標、換行、空格以及從右到左書寫的文字,都可能因為字元計數方式不同而出現意外結果。它適合做文字實驗、回文檢查、小遊戲、字串除錯、教學示範,以及發現隱藏空格或後綴問題。需要注意的是,反轉字串不是加密,也不是安全的資料脫敏方式。輸入包含組合 Emoji 或一個可見字元由多個碼點組成時,應仔細檢查輸出是否符合預期。
使用方式
基本操作
- 在左側輸入框中輸入或貼上要反轉的文字
- 選擇反轉模式(全部反轉、反轉詞語等)
- 右側將自動顯示反轉後的結果
- 按「複製」複製結果,或按「交換」將結果作為輸入繼續操作
文字處理
- 反轉純文字雖然簡單,但遇到表情符號、組合字元或由右至左書寫的文字時,可能會產生非預期的視覺結果。
- 對於程式碼、URL 或結構化資料,請僅反轉目標片段,而非盲目反轉整段文字。
使用場景
技術原理
字元層級的反轉使用展開語法:[...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)。
會保留換行嗎?
預設會把整段輸入(包含換行符)一起反轉,原本最後一行會變成第一行。開啟「逐行反轉」選項後,就會在保留行序的前提下對每行內容反轉,適合對多行文字做視覺效果。
反轉後的文字一定能讀懂嗎?
由左至右閱讀的語言(英文、中文、日文)反轉後幾乎無法閱讀。由右至左閱讀的語言(阿拉伯文、希伯來文)看起來像勉強可讀,但其實也會壞掉,因為雙向文字演算法會與反轉互相打架。反轉主要是程式或謎題練習用的,並非真正實用的文字轉換。
我的文字會被上傳嗎?
不會。反轉在您的瀏覽器中執行,貼上的文字不會被傳送出去。