我注意到,有很多数字排序方法似乎按1、10、2、3 ...排序,而不是预期的1、2、3、10...。需要第一种方法,并且作为用户,只要在实践中看到它,我都会感到沮丧。第一种样式是否有合理的用例?如果是这样,它们是什么?如果没有,那么第一类样式是如何形成的?每种排序方法的正式名称是什么?
我注意到,有很多数字排序方法似乎按1、10、2、3 ...排序,而不是预期的1、2、3、10...。需要第一种方法,并且作为用户,只要在实践中看到它,我都会感到沮丧。第一种样式是否有合理的用例?如果是这样,它们是什么?如果没有,那么第一类样式是如何形成的?每种排序方法的正式名称是什么?
Answers:
即按字典顺序排序,这意味着该语言基本上将变量视为字符串,并逐个字符地进行比较("200"
大于,"19999"
因为'2'
大于'1'
)
要解决这个问题,你可以
确保将值视为整数,
前缀'0'
在字符串上,因此长度都相等(仅在知道最大值时才可行)。
这就是为什么您会在媒体文件(S1E01)上看到前加0的剧集编号的原因,因此按字典顺序排序不会使事情变得混乱,并允许程序按字母顺序简单地播放/显示,
或制作一个自定义比较器,该比较器首先比较字符串的长度(较短的字符串是较小的整数),然后在比较时按字典顺序比较(注意前导'0'
)
这是按字母顺序而不是数字顺序对数字字符串进行排序时的结果。
sort
例如,该排序样式是unix 命令的默认行为,除非您使用--numeric-sort
命令行选项,该选项告诉它尝试解释数字值。