如何排序字符串数组

sam*_*sam 3 ruby arrays sorting

我正在使用铁轨上的红宝石,我是新来的,还有铁轨上的红宝石.我正在研究一个项目,并找到一些排序包含图像名称的字符串数组的问题.我尝试了很多算法,我知道这对我没用.当我调用服务进行图像提取时,它给了我这样的数组.

例:

["page-1_1.png",
 "page-1_10.png",
 "page-1_11.png",
 "page-1_2.png",
 "page-1_3.png",
 "page-1_4.png",
 "page-1_5.png",
 "page-1_6.png",
 "page-1_7.png",
 "page-1_8.png",
 "page-1_9.png"]
Run Code Online (Sandbox Code Playgroud)

我想像这样排序这个数组:

["page-1_1.png",
 "page-1_2.png",
 "page-1_3.png",
 "page-1_4.png",
 "page-1_5.png",
 "page-1_6.png",
 "page-1_7.png",
 "page-1_8.png",
 "page-1_9.png",
 "page-1_10.png",
 "page-1_11.png"]
Run Code Online (Sandbox Code Playgroud)

我曾尝试过很多东西来排序,但无法得到任何解决方案.请帮我.

ndn*_*kov 10

names.sort_by { |name| name.scan(/\d+/).map(&:to_i) }
Run Code Online (Sandbox Code Playgroud)

这将查找每个文件名中的所有数字,并按所述数字排序.注意,数组是通过比较第一个元素来排序的,如果是相等的 - 第二个,依此类推.