如何使用sort_by按字母顺序然后按数字顺序然后按特殊字符排序

用户名

我有一个数组:

arr = ["Bar", "abc", "foo", "1", "20”, "10", "_def"]

我需要先按字母顺序对不区分大小写的字母进行排序,然后再按数字后跟特殊字符进行排序。

我正在尝试使用sort_by

irb(main):071:0> arr.sort_by {|s| [s[/[0-9a-z]+/], s.to_i]}
=> ["1", "10", "20", "abc", "Bar", "_def", "foo"]

输出必须是:

arr = ["abc", "Bar", "foo", "1", “10”, “20", "_def"]
斯特凡

文档

数组以“元素方式”进行比较;将第一个元素aryother_ary使用<=>运算符的第一个元素进行比较,然后将每个第二个元素进行比较,依此类推…

您可以通过创建排序组来利用此行为:

arr = ["Bar", "abc", "foo", "1", "20", "10", "_def"]

arr.sort_by do |s|
  case s
  when /^[a-z]/i
    [1, s.downcase]
  when /^\d/
    [2, s.to_i]
  else
    [3, s]
  end
end
#=> ["abc", "Bar", "foo", "1", "10", "20", "_def"]

第一元件(123)限定的组中的位置:与第一位置,在第二位置数字串和第三位置其余字母字符串。在每个组中,元素按第二个元素排序:带字母的字符串按其小写字母值,数字字符串按其整数值以及其余的按自身排序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何按字母顺序然后按数字顺序?

如何按字母顺序对 csv 数据进行排序,然后按列按数字排序?

SQL如何用数字按字母顺序排序文本,然后按数字排序

MySQL-如何按名称排序,然后按字母数字顺序在表上排序?

按值对Hashmap排序,然后按字母顺序排序

按数据属性(按字母顺序,然后按数字顺序)对列表项进行排序

C-按计数排序,然后按字母顺序

linq-字符串列表-仅按字母顺序,然后按数字顺序

如何计算字符串中的字符数,然后按字母顺序排序?

PHP高级按数字先排序,然后按字母顺序排序

给定哈希数组,按字母顺序排序,然后按数字排序

按字母顺序对字符数组进行排序,然后按长度排序

我想按数字降序然后按字母顺序升序对字典进行排序

如何在外壳脚本中按字母顺序对第二列进行排序,然后按数字排序?

如何按长度排序列表,然后按字母顺序反向

首先按字母顺序对列表进行排序,然后按数字对列表进行排序?

我如何排除某些薪水,然后按顺序排序?

按字母顺序排列数组,然后按大写,然后按小写

PHP中的二维数组的数字然后按字母顺序排序

Linq按属性排序,然后按原始顺序排序

如何先按字母然后按数字排序?

按字母顺序对数据表进行字母排序,然后按R中的数字值排序

Postgres / ActiveRecord按字母排序,然后按数字排序?

如何按数字顺序然后按字符串降序排列列表?

如何先按字母顺序对字典排序,然后按值升序排列?

熊猫value_counts:按值排序,然后按字母顺序排序?

按子数组类型值排序,然后按字母顺序排序

MySQL-按多个单词排序,然后按字母顺序排序?

MongoDB:按现有字段排序,然后按字母顺序排序