Sort an array alphabetically in Ruby but with capitalised words at the end

来源:互联网 发布:java.util.arraylist 编辑:程序博客网 时间:2024/06/10 10:52

1、["Apple","banana","Zebra","orange"].sort_by(&:swapcase)

Probably not a concern, but ["iPhone", "item"].sort_by(&:swapcase) #=> ["item", "iPhone"],["IRB", "It"].sort_by(&:swapcase) #=> ["It", "IRB"]

2、Yet another way:

arr = %w{ Apple banana Zebra Camel iPhone waffles Pancakes }  # => ["Apple", "banana", "Zebra", "Camel", "iPhone", "waffles", "Pancakes"] arr.sort.rotate(arr.count { |s| s[/^[A-Z]/] })   # => ["banana", "iPhone", "waffles", "Apple", "Camel", "Pancakes", "Zebra"] 

We have:

a = arr.sort  # => ["Apple", "Camel", "Pancakes", "Zebra", "banana", "iPhone", "waffles"]nbr_capitalized_words = arr.count { |s| s[/^[A-Z]/] }  #=> 4a.rotate(nbr_capitalized_words)  #=> ["banana", "iPhone", "waffles", "Apple", "Camel", "Pancakes", "Zebra"] 
3、["banana", "Banana","orange", "Apple", ].sort_by{|x| [x[0].upcase==x[0] ? 1:0,x] }


0 0