








今天在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
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。