Mr.*_*ack 4 ruby sorting ruby-on-rails natural-sort
这是我的文件夹结构.
/ home/files/encounter 9-22-11-0.jpg ../home/files/encounter 9-22-11- [n] .jpg
puts Dir.glob("/home/files/*.jpg")[0]
Run Code Online (Sandbox Code Playgroud)
当我执行上面的代码时,它显示第六个文件(索引5 =>/home/files /遇到9-22-11-5.jpg),但实际上我需要输出作为第一个文件(索引0 =>/home/files/encounter 9-22-11-0.jpg)
如何将文件排序为用户定义的排序顺序?喜欢
当我尝试..
.. [0] =>/home/files/encounter 9-22-11-5.jpg
.. [1] =>/home/files/encounter 9-22-11-21.jpg
.. [2] =>/home/files/encounter 9-22-11-39.jpg
但是,我需要
.. [0] =>/home/files/encounter 9-22-11-0.jpg
.. [1] =>/home/files/encounter 9-22-11-1.jpg
.. [2] =>/home/files/encounter 9-22-11-2.jpg
附加信息,排序也不起作用.
f = Dir.glob("/ home/files/*.jpg").排序
f [0] =>/home/files/encounter 9-22-11-0.jpg
f [0] =>/home/files /遇到9-22-11-1.jpg
f [0] =>/home/files/encounter 9-22-11-10.jpg
f [0] =>/home/files/encounter 9-22-11- 11.JPG
Jon*_*röm 12
puts Dir.glob("/home/files/*.jpg").sort
Run Code Online (Sandbox Code Playgroud)
如果您有一个类似的格式11-09-22-05.jpg而不是9-22-11-5.jpg.您可以尝试将它们排序为数字.
Dir.glob("/home/files/*.jpg").sort_by {|s| s.gsub("-","").to_i }
Run Code Online (Sandbox Code Playgroud)
但是因为看起来你有月 - 日 - 年数,我想正确的排序方式比这更复杂.
arr=%w[9-22-12-33.jpg 9-22-11-5.jpg 9-22-10-99.jpg 12-24-11-1.jpg]
arr.sort_by do |s|
t = s.split("-").map(&:to_i)
[t[2], t[0], t[1], t[3]]
end
Run Code Online (Sandbox Code Playgroud)
它通过重新格式化9-22-11-5.jpg为包含[11, 9, 22, 5]然后按其排序的数组来工作.
| 归档时间: |
|
| 查看次数: |
5362 次 |
| 最近记录: |