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

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]/] }
  #=> 4

a.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] }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章