文本反转器:即时反转文本和翻转字符
文本反转器可在浏览器中在线将文字按字符顺序整体颠倒,单次最多可处理一万个字符的长文本。粘贴任意文本后,工具会即时翻转字符排列顺序,同时保持表情符号、重音字母和各种文字系统的完整性不被拆散或损坏,适合制作镜像文本、检查回文句子,或用于社交媒体上的趣味反向文字效果。
文本反转工具
在下方输入或粘贴任何文本,即可立即反转字符顺序。输入时实时查看结果。
文档
什么是文本反转工具?
文本反转工具可以颠倒一段文本中字符的顺序。输入“hello”会得到“olleh”。它会从最后一个字符到第一个字符,依次倒序写出输入中的每个字符。人们使用它生成倒序文本、测试单词是否为回文,或学习编程中的字符串反转原理。
如何使用文本反转工具
- 在输入框中输入或粘贴文本。
- 停止输入后,倒序文本会立即显示在下方。无需按按钮。
- 按下复制按钮即可复制结果。
重置按钮会清除输入和结果。该工具最多接受10,000个字符;输入过长时会显示错误消息,要求缩短文本。计数以可见字符为准,因此一个表情符号算作一个字符,尽管计算机可能将其存储为多个部分。
文本反转公式
对于由字符组成的长度为n的字符串,其反转字符串为:
简单来说,最后一个字符变成第一个字符,倒数第二个字符变成第二个字符,依此类推,直到第一个字符变成最后一个字符。
算法的逐步工作过程
- 从空结果开始。
- 取出输入中的最后一个字符,并将其添加到结果中。
- 取出倒数第二个字符,并将其添加进去。
- 按倒序重复此过程,直到所有字符都已添加。
大多数反转工具处理的是单个计算机字符。而该工具会先将每个表情符号、旗帜和带重音字母归为一个单独的单元,再进行反转,这种方法称为字素簇分割。下面将解释其重要性。
计算示例
输入:Hello, World!
反转结果:!dlroW ,olleH
每个字符,包括逗号、空格和感叹号,都保持其本身不变。改变的只有顺序。
处理表情符号、重音符号及其他 Unicode 字符
计算机通常会将一个可见字符(例如表情符号或带重音字母)存储为多个称为码点的小单元。逐个翻转这些单元而不考虑它们之间的归属关系,可能会将一个字符拆开。
例如,“Hello 👍”包含一个由两个隐藏单元组成的竖起大拇指表情符号。基本的逐单元反转可能会将这两个单元分开,导致出现损坏的符号而不是完整的表情符号。该工具通过将每个表情符号、旗帜和带重音字母视为一个单元来避免这一问题,因此“Hello 👍”会正确变为“👍 olleH”。旗帜表情符号由代表国家代码的两个隐藏符号组成,也会保持完整:“🇺🇸 USA”反转后变为“ASU 🇺🇸”,而不会将旗帜拆开。
常见用途
- 回文检查:回文正读和倒读都相同,例如“racecar”。将单词与其反转结果进行比较,是一种测试方法。
- 学习编程:反转字符串是练习循环、数组和栈的常见题目。
- 文字游戏和谜题:谜题和密室逃脱中会使用倒序单词来隐藏信息。
- 设计效果:一些设计师会反转文本,以制作镜像标志或实现视觉效果。
- 调试:比较正序文本和倒序文本,有助于发现某些数据错误。
字符反转与单词反转
这两种操作经常被混淆。
- 字符反转(本工具执行的操作):每个字符都会翻转。“Hello World”变为“dlroW olleH”。
- 单词反转:每个单词保持完整,但单词的顺序发生变化。“Hello World”变为“World Hello”。
简史
倒序书写和镜像书写的历史比计算机早数千年。一些古希腊铭文使用一种称为牛耕式书写的样式,文字行交替改变方向,先从左到右,再从右到左,类似牛耕地时的路线。列奥纳多·达·芬奇的大部分笔记都采用镜像文字,只有对着镜子才能读懂;历史学家至今仍在争论他这样做是为了保密、方便左手书写,还是为了防止墨水涂抹。
在计算机领域,字符串反转自计算机科学早期起就是一种标准编程练习。它常用于讲解栈和数组的工作方式,因为将字符压入栈中再依次弹出,会自动颠倒字符顺序。
如何在代码中反转文本
大多数编程语言都提供了内置方法或简单方式来反转字符串:
1text = "Hello, World!"
2print(text[::-1]) # !dlroW ,olleH
31const text = "Hello, World!";
2console.log([...text].reverse().join('')); // !dlroW ,olleH
3这两个示例都能正确反转普通字母和数字,以及🌍这类由单个单元组成的表情符号。但它们仍可能拆开由多个隐藏单元组成的字符,例如某些旗帜表情符号、使用独立重音符号输入的带重音字母,或由特殊连接字符组合而成的家庭表情符号。要安全地按完整字素进行反转,需要专用函数,例如 JavaScript 的Intl.Segmenter。
性能
反转文本需要线性时间:算法会恰好查看每个字符一次,因此输入量加倍时,工作量大致也会加倍。对于普通文本,从单个单词到数页内容,结果几乎会立即显示。对于兆字节级别及更大的超大文件,最好使用专用程序以流式方式处理数据,而不是一次性将全部内容加载到内存中。
常见问题
如何在线反转文本?
将文本粘贴或输入上方的框中。停止输入后,倒序文本会自动显示。使用复制按钮复制结果。
文本长度有限制吗?
有。该工具最多接受10,000个字符。输入更长时会显示错误消息,而不是生成结果。字符数量按屏幕上的显示方式计算,因此一个表情符号或带重音字母算作一个字符,而不是两个。
该工具反转的是单词还是字符?
它反转的是单个字符,而不是单词的顺序。“Hello World”会变为“dlroW olleH”,而不是“World Hello”。
它能处理表情符号和非英语文本吗?
可以。该工具将表情符号、旗帜和带重音字母视为单个单元,因此反转后仍能保持完整。它也适用于任何文字体系,包括中文、阿拉伯文和西里尔文字。
如果将文本反转两次,会恢复原文吗?
会。再次反转已经反转的字符串即可恢复原文。这种性质称为对合。
倒序文本对加密有用吗?
没有。反转字符并不安全。它只能在视觉上隐藏文本,任何人将其再次反转即可读出内容。
参考文献
- Unicode 联盟。《Unicode 标准附件#29:Unicode 文本分段》。
- Cormen, T. H.、Leiserson, C. E.、Rivest, R. L. 和 Stein, C.(2009)。《算法导论》(第3版)。MIT 出版社。
- MDN Web Docs。《Intl.Segmenter》。Mozilla 开发者网络。