文本反转

字符反转/行反转/单词反转

422 次访问

文本反转 · 多种粒度

原文0 字符
结果0 字符

使用注意

· 字符反转:用 Array.from 处理,支持 emoji 与中文(不会拆 Surrogate Pair)

· 倒立字母:用 Unicode 现成的倒立形态字符(如 a → ɐ),可直接复制粘贴到任何支持 Unicode 的地方

· RTL 双向标记:用 Unicode U+202E RIGHT-TO-LEFT OVERRIDE 控制字符,让文本在显示时反向但实际字节顺序不变(社工常见手法)

· 复合 emoji:如 👨‍👩‍👧(ZWJ 序列)可能被错拆,建议按词反转

关于本工具

了解工具定位 · 使用场景 · 对比优势

使用场景

🔍

日志分析排查

运维人员排查服务器错误日志时,面对上千行混杂时间戳、IP 和错误码的文本,需要快速定位异常模式。使用行反转功能将最新日志置顶,结合单词反转还原被截断的关键字段(如 IP 地址或请求路径),几分钟内完成原本需要手动逐行翻查半小时的故障定位。

📝

文案创意反转

广告文案策划在写标语或海报文案时,想通过文字倒序制造记忆点或视觉冲击。输入整句文案后,用字符反转生成倒序版本(如「世界很大」→「大很界世」),再配合单词反转调整语序,快速产出 3-5 个备选方案,避免从零构思的卡顿。

📖

古文/谜语还原

古籍爱好者或谜题玩家遇到从右向左书写的竖排文本(如某些碑帖、印章或谜语),需要将其转为现代阅读顺序。复制原文到工具,用行反转和字符反转组合操作,一键得到可读的现代横排版本,省去手动逐字重排的麻烦。

🛠️

数据脱敏预处理

数据分析师在分享样本数据前,需对敏感字段(如手机号、身份证号)做简单混淆。使用字符反转将数字倒序(如 13812345678 → 87654321831),既保留位数和格式特征供测试使用,又无法直接还原原始信息,比手动随机替换快 10 倍。

🎮

游戏彩蛋验证

游戏玩家在论坛看到隐藏关卡或成就的解锁提示(如倒序输入「esrever」才能触发彩蛋),需要快速验证。复制提示文本到工具,用字符反转或单词反转一键得到原始指令,避免在游戏内反复试错,节省游戏时间。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A (online-utility.org)传统方法 (手动编辑)
数据隐私纯浏览器处理,文本不上传服务器文本需提交至服务器处理完全本地,无网络传输
处理速度即时 (< 0.5 秒)依赖网络延迟,通常 1-3 秒取决于文本长度,数分钟至数小时
离线可用支持,加载后完全离线运行不支持,必须联网支持,无需任何工具
文本大小限制受浏览器内存限制(通常 < 100MB)通常有 1-10MB 上传限制无限制,受限于编辑者精力
格式保留支持保留原始空行和缩进部分工具会移除多余空白字符完全保留,取决于操作精度
批量处理单次输入,不支持批量文件部分竞品支持批量上传需逐文件手动操作
撤销/恢复无撤销功能,需重新输入无撤销功能支持 Ctrl+Z 撤销

使用指南

上手步骤 · 输入输出 · 避坑提示

输入输出示例7 个典型场景,覆盖常规、边界与易错

输入输出说明
Hello World!!dlroW olleH典型场景:英文字符反转
第一行 第二行 第三行第三行 第二行 第一行典型场景:多行文本行反转
hello world foo barbar foo world hello典型场景:英文单词反转
你好世界界世好你边界 case:中文字符反转,按字符处理
aa边界 case:单字符输入,反转结果不变
边界 case:空输入,输出为空
hello worldworld hello易错 case:多余空格在单词反转中保留

常见错误对照7 个常踩的坑 · 错误 → 修复

1. 把 URL 编码的字符串当作文本反转

错误
输入:%E4%BD%A0%E5%A5%BD(你好)→ 反转后:%A5%E5%BD%A0%E4%BD%
修复
先对 URL 解码得到「你好」,反转后得到「好你」,再重新 URL 编码为 %E5%A5%BD%E4%BD%A0

URL 编码的百分号+十六进制是传输格式,不是实际字符;直接反转会破坏编码结构,无法还原

2. 误以为单词反转会保留标点位置

错误
输入:Hello, world! → 期望:world! Hello,
修复
输入:Hello, world! → 实际:world! Hello,

单词反转按空格分词,标点附着在单词上一起移动;如需标点固定位置,需手动后处理

3. 把全角空格当作单词分隔符

错误
输入:Hello World(全角空格)→ 期望:World Hello
修复
输入:Hello World(半角空格)→ 实际:World Hello

工具按半角空格(U+0020)分词;全角空格(U+3000)被视为普通字符,不会触发单词反转

4. 在行反转模式中混入空行导致计数偏差

错误
输入:
A
B
C(首行空)→ 期望:C B A
修复
输入:A
B
C → 实际:C
B
A

行反转按换行符分割,空行会被保留为独立行;首尾空行会改变反转后的行序和总行数

5. 把多字节 Emoji 拆开反转

错误
输入:👨‍👩‍👧(家庭 Emoji)→ 反转后:‍👧‍👩‍👨(乱码)
修复
输入:👨‍👩‍👧 → 反转后:👧‍👩‍👨(保持 ZWJ 序列完整)

部分 Emoji 由多个码点通过零宽连字(ZWJ)组合;工具按 Unicode 码点反转可能拆散组合序列,需确认是否支持 grapheme cluster

6. 反转后忘记处理首尾空白

错误
输入:hello world → 反转后:world hello(尾部多空格)
修复
输入:hello world → 反转后:world hello(无多余空格)

原始字符串首尾的空格在反转后会被移动到另一端;如需对齐格式,建议先 trim 再反转

7. 把数字字符串反转后当作数值使用

错误
输入:'12345' → 反转后:'54321' → 当作数字 54321
修复
输入:'12345' → 反转后:'54321' → 仅作为字符串使用

数字字符串反转后仍是字符串,前导零(如 '001' → '100')不会丢失;直接数值转换可能丢失语义

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

rev(s) = s[n-1] + s[n-2] + ... + s[0]

变量说明

  • s — 输入字符串
  • n — 字符串长度(字符数)
  • s[i] — 字符串第 i 个字符(0 索引)

示例

输入字符串 s = "abc",长度 n=3。反转过程:取 s[2]='c',s[1]='b',s[0]='a',拼接得 "cba"。行反转同理,将每行视为一个元素进行逆序排列。单词反转则按空格分词后逆序重组,如 "hello world" → "world hello"。

适用范围

适用于任意 Unicode 字符串(含中文、标点、emoji),字符反转按码点顺序操作。行反转以换行符 \n 为分隔。单词反转以空白字符(空格/制表符)为分隔,连续空白视为一个分隔符。

原理图

输入文本粘贴或键入选择模式字符 / 行 / 单词浏览器内计算纯前端 · 无网络请求展示结果反转后文本隐私说明所有文本处理仅在浏览器本地完成数据不会上传至任何服务器
用户输入 本地处理 输出结果

开发者集成

3 种主流语言 · 复制即用

import sys

# 字符反转
s = "hello, 世界"
reversed_chars = s[::-1]
print(reversed_chars)  # 界世 ,olleh

# 单词反转(按空格拆分,保留顺序)
text = "hello world foo"
reversed_words = " ".join(word[::-1] for word in text.split())
print(reversed_words)  # olleh dlrow oof

# 行反转
lines = "line1\nline2\nline3"
reversed_lines = "\n".join(lines.splitlines()[::-1])
print(reversed_lines)
# line3
# line2
# line1
package main

import (
	"fmt"
	"strings"
)

func reverseString(s string) string {
	runes := []rune(s)
	for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
		runes[i], runes[j] = runes[j], runes[i]
	}
	return string(runes)
}

func main() {
	// 字符反转(支持 Unicode)
	fmt.Println(reverseString("hello, 世界")) // 界世 ,olleh

	// 单词反转
	words := strings.Fields("hello world foo")
	for i, w := range words {
		words[i] = reverseString(w)
	}
	fmt.Println(strings.Join(words, " ")) // olleh dlrow oof

	// 行反转
	lines := strings.Split("line1\nline2\nline3", "\n")
	for i, j := 0, len(lines)-1; i < j; i, j = i+1, j-1 {
		lines[i], lines[j] = lines[j], lines[i]
	}
	fmt.Println(strings.Join(lines, "\n"))
	// line3
	// line2
	// line1
}
// 字符反转(支持 Unicode)
const s = 'hello, 世界';
const reversedChars = [...s].reverse().join('');
console.log(reversedChars); // 界世 ,olleh

// 单词反转
const text = 'hello world foo';
const reversedWords = text.split(' ').map(w => [...w].reverse().join('')).join(' ');
console.log(reversedWords); // olleh dlrow oof

// 行反转
const lines = 'line1\nline2\nline3';
const reversedLines = lines.split('\n').reverse().join('\n');
console.log(reversedLines);
// line3
// line2
// line1

常见问题

8 个高频疑问

文本反转怎么用?我复制了一段文字进去,点按钮没反应。
最常见的原因是输入框里没有内容,或者全是空格。先把文字粘贴到输入框,确保有可见字符,然后点击「反转」按钮。如果按钮是灰色的,说明输入框为空或者工具还在加载中(纯前端工具初次加载需要几毫秒初始化)。另外,如果文字包含特殊字符(如零宽空格、控制字符),工具可能无法识别,建议先粘贴到记事本清除格式再试。
为什么反转后的文字顺序不对?比如“123”反转变成了“321”而不是“123”?
这是正常行为。本工具的「字符反转」是按字符顺序倒序排列:输入“123”输出“321”,输入“abc”输出“cba”。如果需要保持单词顺序不变但反转每个单词内部字符,请使用「单词反转」模式;如果需要整行顺序翻转,请使用「行反转」模式。如果仍然不符合预期,检查是否选错了反转模式(默认是字符反转)。
反转后中文和英文混排时,字符顺序乱了,怎么解决?
中文和英文混排时,字符反转会按 Unicode 码点顺序倒序排列,导致英文单词被拆散。例如“你好 world”反转为“dlrow 好你”。要保留英文单词完整性,建议先用「单词反转」模式:它会识别空格分隔的单词,反转单词顺序(不反转单词内部字符),输出“world 你好”。如果希望英文单词内部也反转,可以先在外部用「字符反转」处理英文部分,再合并。
这个工具支持多少字数?我有一篇几千字的文章,会不会卡死?
纯前端工具没有硬性字数上限,但受浏览器内存限制。实测 Chrome 下处理 10 万字符以内的文本流畅无卡顿,超过 50 万字符可能出现界面冻结几秒。如果文章超过 10 万字,建议分段处理。另外,行反转模式(按换行符分割)比字符反转更节省内存,大文本优先用行反转。工具不保存输入,关闭页面即释放内存。
为什么我把反转后的文字粘贴到 Word 里,格式全乱了?
本工具只输出纯文本,不带任何格式(加粗、颜色、字体等)。反转后的文字粘贴到 Word 时,会继承 Word 当前光标位置的段落样式。如果出现乱码或排版异常,可能是原文本包含 Word 特有的控制字符(如软回车、不间断空格),这些字符在反转后位置改变导致。建议先通过记事本粘贴一次,再从记事本复制到 Word,可以过滤掉大部分控制字符。
这个工具和手机上的反转 App 有什么区别?在线版会不会更慢?
核心区别两点:1)在线版完全在浏览器本地运行,不依赖网络,速度取决于电脑性能,通常比手机 App 快(手机 App 还需加载整个运行时环境);2)在线版没有字数限制和广告,手机 App 常限制 1000 字以内或需付费解锁。缺点是必须联网才能打开页面(首次访问后缓存可用,但无法离线使用)。如果经常需要离线处理,建议用手机 App。
反转结果能直接复制出来吗?有没有复制按钮?
工具界面提供「复制结果」按钮,点击即可将反转后的文本复制到剪贴板。如果按钮无效(部分浏览器限制非安全上下文下的剪贴板 API),可以手动选中结果框中的文字,按 Ctrl+C(Mac 用 Command+C)复制。如果结果框内文字无法选中,尝试先点击结果框激活焦点,再按全选快捷键 Ctrl+A 后复制。
行反转和字符反转有什么区别?我该用哪个?
行反转:按换行符分割成多行,然后颠倒行顺序。例如输入三行“A\nB\nC”输出“C\nB\nA”,每行内部字符不变。字符反转:把所有字符(包括换行符)当作一个整体倒序排列,输入“A\nB\nC”输出“C\nB\nA”但换行符位置也会变。实际场景中:处理歌词、诗歌段落用行反转;处理单个单词或短句用字符反转。如果搞混了,可以看输出结果中的换行位置是否与输入一致来判断。
选择 打开 +新窗口 esc关闭