Ruby按分组和按数字排序数组

Ruby按分组和按数字排序数组,ruby,sorting,Ruby,Sorting,给定一个类似 ['b1','a2','a3','b2','a1','b3'] 我如何对它进行排序,使其按字母“a”或“b”分组,然后按出现的数字顺序进行排序。例如 ['a1','a2','a3','b1','b2','b3'] 或者更复杂的例子: ['fb15', 'abc51', 'abc30', 'fb12'] 以下哪种类型: ['abc30', 'abc51', 'fb12', 'fb15'] 所以假设我可以有一大群不同的“标签”,比如狗。猫、熊、猫头鹰。它们都会在一个数组中出现多

给定一个类似

['b1','a2','a3','b2','a1','b3']
我如何对它进行排序,使其按字母“a”或“b”分组,然后按出现的数字顺序进行排序。例如

['a1','a2','a3','b1','b2','b3']
或者更复杂的例子:

['fb15', 'abc51', 'abc30', 'fb12']
以下哪种类型:

['abc30', 'abc51', 'fb12', 'fb15']
所以假设我可以有一大群不同的“标签”,比如狗。猫、熊、猫头鹰。它们都会在一个数组中出现多次,每次都后跟一个数字


我只想将它们分组,然后按数字排序。

在Ruby中,数组是按字典顺序排列的。这意味着,每当您需要按主键、次键、三键……排序时,您可以简单地将项目转换为数组

ari.sort_by do|el|
str,num=el.partition(/\p{Digit}+/)
[str,num.to_i]
结束

是否
Array#sort
尚未提供您所需的内容<分类;排序;代码>生产<代码>生产<代码>[“abc30”,“abc51”,“fb12”,“fb12”,“fb15”代码>码>码>码>码>码>码>码>码>联邦15,“fb15”,“AB15”,“AB15”,“ABC515”,“ABC515”,“abc51”,“abc51”,“abc30”,“abc30”,“abc30”,“fb15”,“fb15”,“fb15”,“fb15”,“fb15”码>码>码>联邦15,”fb15,“fb15”,“fb15”,“fb15”,“fb15,”fb15”码>码>码>码>码>米.迈克尔.迈克尔.迈克尔.迈克尔.迈克尔.迈克尔.迈克尔.迈克尔.迈克尔.迈克尔.迈克尔.迈克尔.迈克尔.迈克尔.迈克尔.迈克尔.迈克尔.迈克尔.迈克尔.迈克尔.迈克尔.迈克尔.迈克尔.迈克尔.迈克尔.迈克迈克迈克迈克迈克迈克迈克迈克迈克尔布布布布尔斯基斯基.不完全是不完全是不完全是借{s|s.split(/(?小问题,因为捕获组
scan
将返回
[['a','1']]
,这意味着解构将
str
设置为内部数组,将
num
设置为
nil
。您可以使用
str,num=el.partition(/\p{Digit}+/)
取而代之。谢谢。它起作用了,但只是意外,因为
[[['abc',123],nil]
也按字典顺序排列,因为第一个元素也是递归检查的。而且我们没有任何像
'10'
'2'
这样的数字,它们会被错误地排序为字符串。