1

私は次の配列を持っています...

[ "global/20130102-001", "global/20131012-001, "country/uk/20121104-001" ]

文字列の数値部分に基づいて配列をソートする必要があります。したがって、上記は次のようにソートされます。

[ "country/uk/20121104-001", "global/20130102-001", "global/20130112-001 ]

.sort を呼び出して各要素の最初の部分を無視する方法はありますか?

4

2 に答える 2

6

もちろん、そのまま使用してsort_byください。

  arr.sort_by do |s| 
     s.split('/').last
  end
于 2013-01-23T03:55:02.277 に答える
4

はい、方法があります。そのためには a を使用する必要があります#sort_by。そのブロックには配列要素が渡され、要素の「ソート可能な値」を返す必要があります。この場合、正規表現を使用して数字の文字列を見つけます (もちろん、スラッシュで分割するなど、そこで別のロジックを使用できます)。

arr = [ "global/20130102-001", "global/20131012-001", "country/uk/20121104-001" ]

arr.sort_by {|el| el.scan(/\d{8}-\d{3}/)} # => ["country/uk/20121104-001", "global/20130102-001", "global/20131012-001"]
于 2013-01-23T03:51:36.010 に答える