这是我的文件夹结构。
/home/files/encounters 9-22-11-0.jpg .. /home/files/encounters 9-22-11-[n].jpg
puts Dir.glob("/home/files/*.jpg")[0]
当我执行上面的代码时,它显示了第六个文件(索引 5 => /home/files/encounters 9-22-11-5.jpg),但实际上我需要输出作为第一个文件(索引 0 => /home /文件/遭遇9-22-11-0.jpg)
如何按照用户定义的排序顺序对文件进行排序?喜欢
当我尝试..
..[0] => /home/files/encounters 9-22-11-5.jpg
..[1] => /home/files/encounters 9-22-11-21.jpg
..[2] => /home/files/encounters 9-22-11-39.jpg
但是我需要
..[0] => /home/files/encounters 9-22-11-0.jpg
..[1] => /home/files/encounters 9-22-11-1.jpg
..[2] => /home/files/encounters 9-22-11-2.jpg
附加信息,排序也不起作用。
f = Dir.glob("/home/files/*.jpg").sort
f[0] => /home/files/encounters 9-22-11-0.jpg
f[0] => /home/files/encounters 9-22-11-1.jpg
f[0] => /home/files/encounters 9-22-11-10.jpg
f[0] => /home/files/encounters 9-22-11-11.jpg
puts Dir.glob("/home/files/*.jpg").sort
如果你有这样的格式就会起作用11-09-22-05.jpg
代替9-22-11-5.jpg
。您可以尝试将它们按数字排序。
Dir.glob("/home/files/*.jpg").sort_by {|s| s.gsub("-","").to_i }
但因为看起来你有月日年号,我想正确的排序方法比这更复杂一些。
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
它通过重新格式化来工作9-22-11-5.jpg
到一个包含[11, 9, 22, 5]
然后按它排序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)