常见问题
有几种反转方式?
四种:字符反转(整体倒序)、行反转(行序颠倒)、行内反转(每行内部倒序)、单词反转(单词顺序颠倒)。
中文和 emoji 会变成乱码吗?
不会。按 Unicode 字符处理,不会把汉字或 emoji 从中间切断成乱码。
这个功能有什么用?
做文字彩蛋、检查回文、生成测试数据,或者对比字符串的对称性。
关于这个工具
四种模式操作的对象不同:字符反转把整段文本(含换行)从尾到头倒排;行反转只颠倒行的顺序,行内文字不动;行内反转逐行倒排字符但保持行的先后;单词反转颠倒单词顺序,单词本身不变。
多行文本想「每行倒着写」要选行内反转。选成字符反转会把换行一起倒排,最后一行跑到最前面、行与行还可能拼接错位 —— 这是最常见的误选,也是「结果乱掉了」的主要来源。
字符级反转按 Unicode 码位拆(Array.from),所以汉字、日文假名、单个码位的 emoji 都不会被从中间切断变成乱码,这点比 split('') 的实现稳。但由多个码位组合出来的内容仍会散开:带肤色的手势拆成手势和色块两块,家庭、职业这类用零宽连接符(ZWJ)串起来的 emoji 会散成几个独立 emoji。要原样保住这种组合,任何字符级反转都做不到。
单词反转会先去掉首尾空白,再按连续空白切分、用单个空格重新拼接 —— 原来的换行、缩进、连续多空格都会丢。做标题或关键词重排够用,处理代码、对齐文本请改用行内反转。