Eclipse导航器与项目资源管理器文件名数字排序异常咨询
解答:Eclipse 文件排序的问题
你遇到的这个情况绝对不是个例,这其实是字典序排序和自然数字排序的差异导致的,并非你独有的问题,也不算Eclipse的Bug,而是它默认的排序规则带来的结果。
为什么会出现这种排序差异?
Eclipse默认采用的是字典序(Lexicographical Order),也就是逐个字符比较字符串:
- 对比
pro1.cpp和pro10.cpp时,前三个字符pro完全一致,第四个字符都是1,继续看后续:pro1.cpp到第四个字符后就结束了,而pro10.cpp第五个字符是0,字典序里空字符小于0,所以pro1.cpp排在前面; - 再看
pro10.cpp和pro2.cpp,第四个字符1的ASCII码小于2,所以pro10.cpp会排在pro2.cpp前面,这就出现了你看到的排序结果。
而你期望的是自然排序(Natural Sort Order),这种排序方式会把连续的数字当成一个整体来比较大小——比如把10看作数字10,2看作数字2,自然10比2大,所以pro2.cpp会排在pro10.cpp前面。
如何改成你期望的排序方式?
你可以在Eclipse的Project Explorer视图里调整排序规则:
- 点击Project Explorer右上角的小三角图标(视图菜单);
- 找到
Sort选项,展开后选择By Name (Natural Order)(不同Eclipse版本的表述可能略有不同,比如有些版本直接叫Natural Sort); - 调整后文件就会按照你期望的数字顺序排列了。
两种排序结果对比
- 字典序(默认):
pro0.cpp,pro1.cpp,pro10.cpp,pro11.cpp,pro2.cpp,pro3.cpp - 自然排序(调整后):
pro0.cpp,pro1.cpp,pro2.cpp,pro3.cpp,pro10.cpp,pro11.cpp
内容的提问来源于stack exchange,提问作者hrk
相关产品推荐
相关产品推荐

