博客园  :: 首页  :: 管理

今天在windows 11 中创建了如下3个目录:如下三个目录名

20251230-150758-20260111-121939

20251230152329-20260111-121504

20260111-120721

但在按名称排序时,结果却是

20251230-150758-20260111-121939

20260111-120721

20251230152329-20260111-121504

笔者一直在思考为什么会按这个顺序呢?最后笔者查询了一些资料,发现有如下规则

在 Windows 文件资源管理器中,文件和文件夹的默认排序方式是“按名称”进行“自然排序”(Natural Sort),也称为“数字感知排序”(Numerical-aware sorting)。

这种排序方式会尝试将字符串中的数字部分当作整数来比较,而不是逐字符比较(字典序)。

 

第一步:理解自然排序 vs 字典排序

字典排序(Lexicographic):逐字符比较 ASCII 值。例如 "10" < "2",因为 '1' < '2'。

自然排序(Natural):识别连续数字并作为整数比较。例如 "10" > "2"。

Windows 使用的是自然排序。所有名字都以日期时间格式开头,但格式略有不同:

A: 20251230-150758-20260111-121939            → 以 20251230 开头
B: 20251230152329-20260111-121504             → 以 20251230152329 开头(没有第一个 -)
C: 20260111-120721                            → 以 20260111 开头

关键点在于:A 和 B 虽然都以 20251230 开始,但 B 没有 - 分隔符,导致 Windows 把整个前缀当作一个更长的数字。

如果我们希望按时间顺序正确排序,应保持命名格式一致,例如始终使用 - 分隔日期和时间

 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/19468130