文本排序为什么变成1、10、2?编号顺序和数值大小要分开
文本处理工作流
点击使用相关工具
把2、10、1排成从小到大,通常会想到1、2、10。但在文本处理工作流里选“按行排序”,得到的却是1、10、2。页面比较的是每一行的文字,不会先把编号转换成数值。整理名单、文件编号或代码标识符之前,先确认要的是哪一种顺序,才能判断结果是否可用。
先只保留“按行排序”,看四行怎样移动
在“输入文本”中粘贴下面四行,最后一行的2后面不要另加换行。把默认步骤从“去除首尾空格”改成“按行排序”,参数框留空,点击“执行工作流”:
2 10 1 2
输出是:
1 10 2 2
1和10都以字符1开头,较短的1排在前面;比较10与2时,第一个字符1在2前面,后面那个0不会让它改成数值比较。两个2仍然都在,行数也仍是4。“按行排序”只换位置,不兼做去重。
这个步骤采用UTF-16码元的字典序,可以理解为按字符编码逐个比较。它不是按金额大小、中文拼音、姓氏笔画或文件名中的数字段排序,也没有填写一个“数字”参数就能切换算法的设置。若任务必须按数值排列负数、小数或金额,应在能明确选择数值排序的软件中完成。
A2与A10之间,还夹着空格和大小写
再试一份五行编号。最后一行A0前有一个普通半角空格,其余行首没有空格:
A2 A10 A01 a2 A0
只执行“按行排序”,结果依次为“空格+A0”、A01、A10、A2、a2。空格也是参与比较的字符,大写A与小写a也不相同。它们不会被自动清理或合并,不能仅凭屏幕上看着相近就当作同一个编号。
如果原始空格只是粘贴时的杂质,可以把第一个步骤改成“去除首尾空格”,再添加“按行排序”;如果空格有业务含义,就应保留。大小写也一样:加“转小写”会真的改写输出,不是仅在排序时忽略大小写。带有大小写含义的账号、代码和编号不能随意这样处理。
每一行会作为完整文字一起移动;工具不会理解逗号后面是金额,或从“第10项”中提取10来比较。若粘贴的是多列表格、带引号的CSV或一段分成多行的说明,它也不会识别记录内部结构。先确定“一行就是一条可独立移动的记录”,否则排序可能拆散原有上下文。
中文名单尤其要先约定口径。同样三个姓,按拼音、笔画和编码排列都可能不同。本页没有这些模式可选,也不根据浏览器语言替你选拼音;名册若有指定的排序规范,应使用支持该规范的工具,不应把当前结果直接交付为正式名单。
001、002、010为什么容易排对
当原有编号规则就规定三位、不足补零时,把002、010、001各放一行,文本排序应得到001、002、010。位数一致、每位都是数字时,逐字符比较与这些非负整数的大小顺序一致,所以统一编号看起来符合直觉。
这不是让所有数据都补零的建议。已有001和1可能代表不同记录,负数、小数、带单位的金额也不能套三位编号的办法。本站这个排序步骤不会自动识别位数,更不会修复已经丢失的前导零。若编号来自表格,可先参照Excel前导零与单元格类型的说明确认真实值,再决定是否整理。
想倒序,能接一个“反转文本”吗?
不能把它当作降序开关。“反转文本”反转的是整段文字的字符,原来的10会变成01,行内字母也会反向;含表情时还可能拆开组成字符的码元。它与只把最后一行移到第一行是两件事。页面目前没有单独的按行降序步骤,不能用这个组合代替。
空行也要单独检查。只排序时,空字符串会排到前面;仅含空格的行仍是一条带空格的文字。若空行只是杂质,明确添加“删除空行”;如果它用于分段,排序本身就可能破坏原来的分组。需要清理重复内容,可按清理与去重的顺序示例另行核对,不要把两种任务混成一个判断。
输入、步骤或参数改动后,都要再次点击“执行工作流”。输出区保留的是上次生成的结果,“复制结果”也会复制那一份。先保留原文,再用几行样本核对行数、首尾记录和顺序,尤其注意空格、大小写和前导零是否仍符合原始规则。