悦省yueser.com

← 全部指南

单词怎么按字母排序?大小写、数字与重音的排序规则

抽认卡打乱了、关键词列表要按字母排、想看看有没有近似重复的词,把词粘进来排一次就能看清。但排序有一套固定规则,不了解就容易觉得结果「不对」。

打开工具:单词排序

什么时候需要把词排好序

做索引、术语表、词汇表时,字母顺序是基本要求;手工排几十个词,越到后面越容易漏,改一次顺序又要重排一遍。抽认卡或单词表被打乱之后,也常想快速恢复成字典序,方便对照课本检查。

还有一种用法是查近似重复:把单词排好序,拼写相近的词会紧挨在一起,一眼就能看出 color 和 colour、organise 和 organize 这类变体,也方便判断两份词表里有哪些条目其实指的是同一个东西。

排序规则是怎么定的

工具按空白切分单词,用默认的字符串比较排序,也就是逐个字符比较编码值。英文字母里大写字母的编码都小于小写字母,所以 Apple 排在 apple 前面,所有大写开头的词都会集中在小写词之前。

数字按字符比较而不是按数值,10 会排在 9 前面,因为字符 1 小于 9。带重音的字母编码更高,é 会排在 z 之后;中文按编码排,顺序和拼音无关。结果用单个空格连成一行,重复的词不会被去掉。

它做不到的,以及该换什么

它不是自然排序:不会把 2 排在 10 前面,也不会把 é 当作 e 处理。需要忽略大小写、按语言习惯排序时,它给不出想要的结果。中文的拼音序、日文的假名序同样不支持,只能得到编码顺序。

需要保留分行时,用按行排序的工具,那个会一行一行排;需要忽略大小写,用忽略大小写的行排序。命令行里 sort 默认受语言环境影响,sort -f 忽略大小写,sort -V 适合版本号,按场景选择更稳妥。

常见问题

为什么大写字母排在小写前面?

因为排序按字符编码比较,大写字母的编码值小于小写字母,所以 Apple 会排在 apple 前面。想去掉这个影响,先把整段转成小写再排序,或者用忽略大小写的行排序工具。

为什么 10 排在 9 前面?

数字也是按字符逐个比较的,先比第一位,1 小于 9,所以 10 排在 9 前面。要按数值排序,先把数字补成相同位数,例如 09 和 10,或者用支持数值排序的工具。

原来的换行去哪了?

排序按空格和换行切分单词,输出时统一用单个空格连接,所以多行会变成一行。需要保留分行结构时,改用按行排序,那个工具不会改变行数。

相关工具:单词排序