大写的单词必须先走
andrew Net andrey Andrew
Andrew andrew andrey Net
升级版:
安德鲁·网安德雷·
安德鲁·安德鲁·安德鲁·安德鲁·网
您可以使用两个连续的标准:首先是字母(不区分大小写),然后是字母(区分大小写)。Array#sort_by
非常适合这些:
%w[andrew Net andrey Andrew].sort_by{|w| [w.downcase, w]}
# => ["Andrew", "andrew", "andrey", "Net"]
b = a.sort { |x,y| (z = x[0].upcase <=> y[0].upcase) == 0 ? x <=> y : z }
%w[andrew Net andrey Andrew].sort_by(&:downcase)