ToolAct工具行动

字符串反转工具

快速反转文本字符串,支持多种反转模式

输入内容
字符数: 0
行数: 0
转换结果
字符数: 0
行数: 0

选择反转方式

什么是字符串反转?

字符串反转工具会把输入文本按相反顺序输出。这个操作看似简单,但真实文本并不总是只有 ASCII 字母:Unicode 字符、Emoji、组合音标、换行、空格以及从右到左书写的文字,都可能因为字符计数方式不同而出现意外结果。它适合做文本实验、回文检查、小游戏、字符串调试、教学演示,以及发现隐藏空格或后缀问题。需要注意的是,反转字符串不是加密,也不是安全的数据脱敏方式。输入包含组合 Emoji 或一个可见字符由多个码点组成时,应仔细检查输出是否符合预期。

如何使用

基本操作

  1. 在左侧输入框中输入或粘贴要反转的文本
  2. 选择反转模式(全部反转、单词反转等)
  3. 右侧自动显示反转结果
  4. 点击「复制」复制结果,或点击「交换」将结果作为新输入继续操作

文本处理

  • 反转纯文本很简单,但 emoji、组合字符和从右到左的脚本可能会产生意想不到的视觉结果。
  • 对于代码、URL 或结构化数据,请按需反转目标片段,不要盲目反转整个文本。

使用场景

在不同结构层级反转文本选择全字符反转、单词顺序反转、逐词反转、逐行反转、行序反转或句子顺序反转。输出会随输入变化实时更新,也可以交换回输入面板继续操作。选择正确的层级能让结果更有意义:反转单词会打乱列表顺序,而逐词反转则保持每个单词完整,只翻转其中的字母。
测试文本转换和边界情况字符级模式使用展开运算符,比简单的字节反转能更好地处理许多 Unicode 字符。行模式和单词模式根据所选转换方式保留不同的空白部分,适合快速数据实验。粘贴空行、双空格或尾部制表符等棘手输入,可以观察每种模式如何处理不可见分隔符。
生成趣味性或诊断性文本变体反转姓名、列表、句子或日志行,用于小游戏、测试数据、布局检查和人工比对。两侧面板的行数和字符数有助于确认转换是否改变了结构还是仅改变了顺序。纯反转操作中输入和输出的这两个计数应该一致,这使得快速数值检查成为可靠的冒烟测试。
验证包含 Emoji 序列的回文粘贴一段文字并切换到字符级反转,检查它正读和反读是否相同。基于展开运算符的方法将多码点 Emoji 和组合音标作为单个单元处理,因此反转后的彩虹旗字符串仍然能正确分组。真正的回文在一次全反转后应恢复原貌,这对于看起来对称但实际不是的输入是一个快速检验方法。
反转字素感知的 Emoji 和 RTL 双向文本对于像 '👨‍👩‍👧'(由男人、ZWJ、女人、ZWJ、女孩组成的家庭 Emoji)这样的输入,简单的字节反转会将序列拆分成破碎的字形。本工具按字素簇迭代,因此反转后的家庭 Emoji 保持完整,而不会变成 '👧‍👩‍👨'。对于阿拉伯语或希伯来语输入,视觉上的从右到左顺序由渲染器保持;数据层面的字符级反转在屏幕上看起来仍然是反转的,因此在假设存在 Bug 之前,请用该语言的渲染效果测试结果。

技术原理

字符级反转使用展开运算符:[...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)。

会保留换行吗?

默认情况下整段输入(包括换行符)一起被反转,最后一行会变成最前一行。开启「按行单独反转」即可在保留行序的前提下逐行反转,适合用于多行文本的视觉效果。

反转后的文字一定能读懂吗?

从左到右阅读的语言(英文、中文、日文)反转后基本无法阅读。从右到左的语言(阿拉伯语、希伯来语)看似可读但其实也会出问题,因为双向算法会与反转产生冲突。反转主要适合代码或谜题练习,并不是真正的文本变换。

我的文本会被上传吗?

不会。反转在浏览器中执行,粘贴的文本不会被传输。