按值对数组进行排序

时间:2013-05-30 06:32:34

标签: ruby

我有一个这样的数组:

array = ["git-hw-abcd", "svn-hw", "svn-hw-design","git-hw"]

如果我做array.sort,我基本上会得到像这样的升序

["git-hw", "git-hw-abcd", "svn-hw", "svn-hw-design"]

希望按值"svn-hw""git-hw"对数组进行排序,以显示为数组的第一个和第二个元素,以便我得到:

[“svn-hw”,“git-hw”,...然后剩下的值]

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:2)

试试这个

* sorting on length(as sort criteria is not specified)

["git-hw-abcd", "svn-hw", "svn-hw-design","git-hw"].sort{|a,b| a.length <=> b.length}

返回

["git-hw", "svn-hw", "git-hw-abcd", "svn-hw-design"]

答案 1 :(得分:2)

array.sort{|a,b| a.split("-h")[1]<=>b.split("-h")[1]}

这就是你想要的

@Hivltg

使用以下方法尝试长度顺序:array= [ "svn-hw", "git-hw-abcd","git-hw", "svn-hw-design", "git-hw-bassics"]

你会发现问题。

答案 2 :(得分:1)

不完全确定您的订购方式,但这是使用块进行排序的示例

array.sort{|a,b| a[4..-1] <=> b[4..-1]}