-3

我有一个字符串数组:

arr = ["2.1", "2.2", "2.2.1", "2.2.10", "2.2.2", "2.10"]

如果我使用arr.sort,结果是:

["2.1", "2.10", "2.2", "2.2.1", "2.2.10", "2.2.2"]

我需要:

["2.1", "2.2", "2.2.1", "2.2.2", "2.2.10", "2.10"]

如何正确排序?

问题2:

如何对“2.1a”或“0.9b”等“alpha”或“beta”类型的字符进行排序

问题 3:

如果我有一个字段类型为字符串的活动记录数组,其中包含这样的数字,那么在模型中设置是否default_scope :order => ...真实sort_by{|a| a.split('.').map &:to_i }

或者

在模型中创建我的方法,例如

def my_sort
  #sorting
end

为了这:

Block.all.my_sort
4

1 回答 1

4
arr.sort_by{|a| a.split('.').map &:to_i }

这将:

  1. split每个字符串成组件。
  2. 将它们中的每一个都更改为整数 ( map &:to_i)。
  3. 相互比较这些数组。
于 2013-01-16T00:02:31.210 回答