如何按字母顺序排列列表:大小写、重音、空格和标点
要按字母顺序排列列表,就把每一项单独放在一行,然后对这些行排序。不过,结果取决于排序所用的规则。大小写、重音、空格和标点都可能让某一项出现在意想不到的位置,所以排序前先想清楚你要哪种规则。
按行排序列表顺序不对免费使用两种会得出不同顺序的规则
计算机比较文本通常有两种常见方式。第一种是比较每个字符的数字编码。所有大写字母的编码都小于所有小写字母,因此单纯按编码排序时,Zoe 和 Ezra 会排在小写的 apple 前面。例如,Python 默认就是这样对普通字符串排序的。
第二种是按照语言的规则来比较,这也是字典的做法。字母会先忽略大小写进行比较,重音则被视为同一字母内的细微差别。人们通常期待的名单顺序就是这样的。
文本行排序工具采用的是第二种规则。它借助浏览器内置的、能识别语言的比较功能,所用语言跟随你的浏览器设置。你不需要手动选择语言,但对于英文中不常见的字母,浏览器的设置仍然会决定它们的位置。
大小写:Apple、apple 和 APPLE
默认情况下,字母比较时忽略大小写,所以 Apple 和 apple 在第一层比较中视为相等。相等的项会保持它们在列表中原来的先后顺序。看下面这个列表:
banana Apple cherry apple
使用默认设置按 A 到 Z 排序,结果是 Apple、apple、banana、cherry。两个 apple 保持了粘贴时的原有顺序。
打开“区分大小写”,大写和小写就会被区分开。同一字母的小写会排在大写前面,于是同样的列表变成 apple、Apple、banana、cherry。“删除重复行”遵循同样的设置,所以关闭“区分大小写”时,Apple 和 apple 会被当作同一项。
标识符、键名和文件名中,小写字母和大写字母代表不同的含义,这种情况下请开启“区分大小写”。名字、标题和大多数单词列表则保持关闭即可。
重音与其他字母表
重音是单纯按编码排序最容易出错的地方。按编码顺序排列 Eve、Ezra、Zoe、Émile,É 的编码很大,会排在 Z 后面。字典会把 Émile 放在 E 开头的名字中,结果是 Émile、Eve、Ezra、Zoe。
其他字母表也有各自的顺序。在瑞典语中,Å 排在 Z 之后,如果浏览器设置为瑞典语,就会按这种方式排序。浏览器设置为英语时,å 则会排在 A 开头的单词中。如果你的列表混用了多种语言,依赖排序结果之前,先用肉眼检查几项。
空格、连字符和标点
空格和标点不会被忽略。它们排在字母和数字之前,彼此之间also有固定的顺序。对于下面这六项:
ab a1 a b a-b a.b a_b
结果是 a b、a_b、a-b、a.b、a1、ab。空格排在下划线之前,下划线排在连字符之前,它们都排在字母 b 之前。这就是为什么 "Sea Lion" 排在 "Seal" 前面,而 "Sealion" 排在 "Seal" 后面。
行首空格是另一个常见的意外。以空格开头的行会排在所有不以空格开头的行之前,所以 " apple" 即使是 apple,也会排在最前面。打开“去掉每行首尾空格”,排序前就会先删除这些空格。
数字
普通排序会把 10 排在 2 前面,因为字符 1 排在 2 之前。选择“数字”,就会把数字当作整数来比较,于是 2 排在前面。删除重复行工具也提供同样的选项,而为什么 10 会排在 2 之前一文讲解了文件名和编码中的这一问题。
打乱顺序是另一回事
打乱顺序不是排序。每次点击再次打乱都会得到一个新的顺序,它使用浏览器的加密随机数生成,因此每种顺序出现的可能性都相等。打乱顺序适合把播放列表或一组练习题调成随机顺序。如果要从列表中公平地抽出获奖者,请改用随机抽选工具。
在 fixmint 中的操作步骤
- 把列表粘贴到你的列表中,每项占一行。
- 处理名字和单词时,保持区分大小写关闭。只有在键名和文件名中大小写有区别时才勾选它。
- 如果有些行以空格开头,勾选去掉每行首尾空格。
- 在排序方式下,选择 A→Z;如果列表项包含数量,则选择数字。
- 复制结果,或使用下载 .txt。
常见问题速答
为什么我的电子表格或代码里,Émile 排在 Zoe 后面?
单纯排序比较的是字符编码,而 É 的编码大于 Z。遵循语言规则的排序会把 Émile 放在 E 开头的名字中。
我应该开启“区分大小写”吗?
只有大小写有含义时才需要开启,例如标识符、键名或文件名。对于名字或单词列表,保持关闭即可。
为什么一行以空格开头的内容跑到了最前面?
空格排在字母之前。打开“去掉每行首尾空格”,然后重新排序即可。
由 AI 辅助翻译自英文原文。
评论
还没有评论。快来抢沙发。


