-3

我有一个这样的数组:

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",... 然后是其余的值]

任何帮助,将不胜感激。

4

3 回答 3

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"]
于 2013-05-30T06:45:29.427 回答
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"]

你会发现问题。

于 2013-05-30T06:48:08.033 回答
1

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

array.sort{|a,b| a[4..-1] <=> b[4..-1]}
于 2013-05-30T06:42:54.443 回答