文本反转
字符反转/行反转/单词反转
使用注意
· 字符反转:用 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 bar | bar foo world hello | 典型场景:英文单词反转 |
| 你好世界 | 界世好你 | 边界 case:中文字符反转,按字符处理 |
| a | a | 边界 case:单字符输入,反转结果不变 |
| 边界 case:空输入,输出为空 | ||
| hello world | world hello | 易错 case:多余空格在单词反转中保留 |
常见错误对照7 个常踩的坑 · 错误 → 修复
1. 把 URL 编码的字符串当作文本反转
输入:%E4%BD%A0%E5%A5%BD(你好)→ 反转后:%A5%E5%BD%A0%E4%BD%先对 URL 解码得到「你好」,反转后得到「好你」,再重新 URL 编码为 %E5%A5%BD%E4%BD%A0URL 编码的百分号+十六进制是传输格式,不是实际字符;直接反转会破坏编码结构,无法还原
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
# line1package 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 个高频疑问