我正在寻找一种算法来排序字符串,类似于在Windows资源管理器中排序文件(和文件夹)的方式.似乎在排序时会考虑字符串中的数值,这会产生类似的结果
name 1, name 2, name 10
代替
name 1, name 10, name 2
通过常规字符串比较得到的.
我本人即将开始写这篇文章,但是想要检查一下是否有人这样做过,并愿意分享一些代码或见解.我接近这个的方法是在比较之前将前导零添加到名称中的数值.这会产生类似的结果
name 00001, name 00010, name 00002
当使用常规字符串排序进行排序时,会给出正确的结果.
有任何想法吗?
它被称为"自然排序".杰夫前一段时间有一篇非常广泛的博客文章,它描述了您可能忽略的困难,并且链接到多个实现.
Explorer使用API StrCmpLogicalW()进行这种排序(称为"自然排序顺序").
您不需要编写自己的比较函数,只需使用已存在的函数.
这里可以找到一个很好的解释.