如果字符串集中有多个数字序列可识别,自然排序应如何工作?
|
所谓的自然排序是为了解决以下问题:当用户期望时
file1.txt
file2.txt
file3.txt
file10.txt
file11.txt
\“通常\”排序会产生:
file1.txt
file10.txt
file11.txt
file2.txt
file3.txt
这很不方便,也不是“自然的”。
现在,我们最近遇到了这样一种情况:用户抱怨同样的问题,因此我们考虑采用自然排序。但是,出现以下问题。考虑以下字符串集:
file1file100.txt
file2file99.txt
...
file99file2.txt
file100file1.txt
其中有多个可识别的数字序列,并且这些序列彼此相反。自然排序应如何处理此类集合(我的意思是结果应该是什么,而不是如何实现)?
没有找到相关结果
已邀请:
4 个回复
亲奋漏
。字符之间的比较是正常的字符顺序,数字之间的比较是正常的整数顺序,字符和数字之间的比较将数字放在任何字符之前(
除外)。最终,您需要打破
和
之间的纽带,因此\“数字\”不仅仅是数字,它们确实需要“知道”其原始表示,以防它到达那么远。 实际上,我建议您不要询问用户。如果他们有非常强烈的意见,希望对文件进行排序,那么还可以,很公平。否则,他们可能实际上并不确切知道他们应该“期望”什么,因此对于分析师/程序员来说,弄清楚什么是“正常”情况比让用户这样做更有意义。当然,如果这笔交易足够值得,可以通过可用性测试间接“询问”它们。我发现,如果您向用户提出错误的问题,他们会感到猜测答案的压力很大,并且仅仅因为用户代表即刻想到的内容而对任意内容进行编码是没有意义的。 无论用户认为规则应该是什么,机会都是他们最好地实际使用的,这是操作系统在文件管理器,文件对话框等中列出文件时默认情况下所做的事情。因此,我愿意为他们提供(或者可能是最接近我的代码,而不会在次要情况下浪费很多钱),如果他们仍然不满意,请找出原因。
磨标烫徽啪
浮凰量
魄龟呸筹
将每个文件划分为6个部分,并对所有字段中的文件进行排序,最左边的字段最重要。 注意:与Steve Jessops的好答案不同,排序时应该整体考虑非数字或数字字符的序列。 看起来最自然的结果应该是您所显示的-最左边的数字字段给出整体顺序-毕竟,我们习惯于数字中最左边的数字是最高有效的;软件版本中最左边的数字是最重要的。