🔃 文本反转器
整体/逐行/逐词/逐字反转文本,实时预览结果
什么是文本反转工具?
文本反转工具是一款将文本进行各种方式反转处理的在线工具。最基本的功能是将字符串从头到尾颠倒排列("Hello" → "olleH"),但本工具还支持按单词反转、按行反转、逐字符翻转并保留空格位置等多种反转模式。文本反转在编程调试(如检查回文)、数据格式转换(如反转文件路径)、趣味文本创作、密码学教学等场景中都有应用。本工具完全在浏览器端运行,支持 Unicode 字符(包括 Emoji 和中文字符)的正确处理。
如何使用文本反转工具
- 步骤一:输入文本 — 在输入框中粘贴或输入需要反转的文本内容。
- 步骤二:选择反转模式 — 选择字符级反转(整体颠倒)、单词级反转(单词顺序颠倒但单词内部不变)、按行反转(行的顺序颠倒)。
- 步骤三:获取结果 — 反转结果实时显示,一键复制到剪贴板。
常见使用场景
场景一:回文检测
将文本反转后与原文对比,判断是否为回文(正读反读相同的文本)。编程面试中常见的回文检测算法题可以用此工具验证结果。
场景二:文件路径反转
将文件路径从 "com/example/utils" 反转为 "utils/example/com",用于包名与路径之间的转换,或在 Java 包名和目录结构之间映射。
场景三:趣味文本和创意写作
创建反转文字效果的帖子、签名或装饰文本。某些谜题和文字游戏中也需要反转文本来获取线索。
技术原理
JavaScript 中反转字符串的简单方法是 str.split('').reverse().join(''),但这无法正确处理 Unicode 代理对(surrogate pairs)和组合字符。Emoji(如 👨👩👧)由多个 Unicode 码点通过 ZWJ 连接,简单拆分会破坏字符完整性。正确处理需要使用 Intl.Segmenter(现代浏览器支持)或扩展的 Unicode 正则表达式。
// 简单反转(仅适用于 BMP 字符)
function reverseString(str) {
return str.split('').reverse().join('');
}
// Unicode 安全反转(使用 Intl.Segmenter)
function unicodeReverse(str) {
const segmenter = new Intl.Segmenter('en', { granularity: 'grapheme' });
const segments = [...segmenter.segment(str)].map(s => s.segment);
return segments.reverse().join('');
}
// 按单词反转
function reverseWords(str) {
return str.split(/\s+/).reverse().join(' ');
}
// 按行反转
function reverseLines(str) {
return str.split('\n').reverse().join('\n');
}
最佳实践与注意事项
- 处理包含 Emoji 或特殊 Unicode 字符的文本时,必须使用 Unicode 安全的反转方法。
- 按单词反转时注意标点符号的处理——标点是否跟随单词还是保持在原位。
- 中文反转是逐字反转(因为中文没有空格分隔单词),如需按词语反转需要分词处理。
- 反转操作是可逆的——对结果再次执行相同反转即可还原原文。
常见问题
Q:为什么 "👨👩👧" 反转后变成乱码?
A>因为 Emoji 家族表情由多个码点通过零宽连接符(ZWJ)组成。简单 split('') 会将一个 Emoji 拆分为多个独立码点。必须使用 Intl.Segmenter 按字素簇(grapheme cluster)分割才能正确反转。
Q:中文文本反转有什么特殊之处?
A>中文没有词间空格,字符级反转就是逐字颠倒("你好世界" → "界世好你")。如果需要按词语反转("你好世界" → "世界你好"),需要先使用分词工具(如 jieba)识别词语边界。
Q:反转操作在编程中有哪些实际应用?
A>常见应用:回文检测、数字反转(如 LeetCode 第7题)、字符串匹配算法中的模式反转、文件路径反转(包名↔目录)、栈结构(后进先出本质上就是反转)等。
Q:如何反转文本但保留空格位置不变?
A>提取所有非空字符反转后,再按原始空格位置插入。例如 "ab cd" 反转非空字符得 "dc ba",再按原位空格填充得 "dc ba"。这种模式适用于需要保持文本对齐的场景。
Q:能反转整个文件吗?
A>可以粘贴文件内容或使用上传功能。对于超大文件(>10MB),浏览器内存可能不足。建议使用命令行 rev(Linux)或 tail -r(macOS)处理。