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