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'
这样的数字,它们会被错误地排序为字符串。