字符串反转工具
快速反转文本字符串,支持多种反转模式
选择反转方式
什么是字符串反转?
字符串反转工具会把输入文本按相反顺序输出。这个操作看似简单,但真实文本并不总是只有 ASCII 字母:Unicode 字符、Emoji、组合音标、换行、空格以及从右到左书写的文字,都可能因为字符计数方式不同而出现意外结果。它适合做文本实验、回文检查、小游戏、字符串调试、教学演示,以及发现隐藏空格或后缀问题。需要注意的是,反转字符串不是加密,也不是安全的数据脱敏方式。输入包含组合 Emoji 或一个可见字符由多个码点组成时,应仔细检查输出是否符合预期。
如何使用
基本操作
- 在左侧输入框中输入或粘贴要反转的文本
- 选择反转模式(全部反转、单词反转等)
- 右侧自动显示反转结果
- 点击「复制」复制结果,或点击「交换」将结果作为新输入继续操作
文本处理
- 反转纯文本很简单,但 emoji、组合字符和从右到左的脚本可能会产生意想不到的视觉结果。
- 对于代码、URL 或结构化数据,请按需反转目标片段,不要盲目反转整个文本。
使用场景
技术原理
字符级反转使用展开运算符:[...str].reverse().join('')。展开运算符将字符串作为 Unicode 码点序列迭代,能够正确处理占用两个 UTF-16 编码单元(代理对)的 BMP 以外字符。而简单的替代方案 str.split('').reverse().join('') 按编码单元分割,会破坏任何 Emoji(如派对礼炮 🎉 U+1F389、火箭 🚀 U+1F680)或任何 U+FFFF 以上的字符。 字素簇增加了另一层复杂性。用户感知的单个字符,如带组合尖音符的 cafe(a + ◌́)、由两个区域指示符组成的旗帜 Emoji,或 ZWJ 连接的家庭 Emoji 👨👩👧,实际上由多个码点组成。码点级反转仍然会重新排列这些组成部分,因此家庭 Emoji 会变成三个独立的人形,尖音符也会脱离基础字母。Intl.Segmenter 配合 granularity: 'grapheme' 是遍历字素簇并在反转过程中保持这些序列完整的标准方法。 在操作层面,成本为 O(n),其中 n 为片段数量,具体取决于所选的分割方式(码点或字素簇)。反转两次会得到原始字符串,这使其可用于回文检查。对于 Unicode 密集的输入,在反转前进行 NFC 标准化(str.normalize('NFC'))可以在存在预组合形式时将基础字符 + 组合序列折叠为预组合形式,减少输出中的意外结果。阿拉伯语和希伯来语等从右到左书写的文字以逻辑顺序存储,但以从右到左的方式渲染,因此反转后的阿拉伯语字符串在数据顺序翻转后在视觉上仍然是反转的。
- 码点级反转:[...str].reverse().join('') 按码点迭代,保留 U+FFFF 以上的代理对(大多数 Emoji)
- 简单字节陷阱:str.split('').reverse().join('') 按 UTF-16 编码单元分割,会损坏任何 U+FFFF 以上的字符
- 字素簇:Intl.Segmenter({ granularity: 'grapheme' }) 保持组合标记、旗帜序列和 ZWJ Emoji 👨👩👧 的完整性
- 单词级反转: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 与 emoji 安全
输入:cafe(e 上带组合重音)
粗暴反转:efac (重音偏离原字母)
按字素簇处理:efac (重音保持附着)
输入:family-emoji-ZWJ-sequence
粗暴反转:拆成 3 个独立 emoji
本工具:保持字素簇完整反转日志文件的行顺序
模式:反转行顺序
输入:
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 + 锐音符 → é)会作为一个字素整体反转。分解形式的输入可能需要先做归一化处理——页面可能在输入时进行 NFC 归一化以处理这种情况。无论哪种方式,自然语言文本的可视结果都是正确的。
反转和镜像有什么区别?
反转改变字符顺序:'AB' → 'BA'。镜像是视觉翻转:'AB' 显示为 ⟨ƎA⟩,需要 CSS transform 或特殊字符。本页面只反转字符顺序,不做像素镜像。如需镜像文字效果,请使用 CSS scaleX(-1)。
会保留换行吗?
默认情况下整段输入(包括换行符)一起被反转,最后一行会变成最前一行。开启「按行单独反转」即可在保留行序的前提下逐行反转,适合用于多行文本的视觉效果。
反转后的文字一定能读懂吗?
从左到右阅读的语言(英文、中文、日文)反转后基本无法阅读。从右到左的语言(阿拉伯语、希伯来语)看似可读但其实也会出问题,因为双向算法会与反转产生冲突。反转主要适合代码或谜题练习,并不是真正的文本变换。
我的文本会被上传吗?
不会。反转在浏览器中执行,粘贴的文本不会被传输。