Umlaut Aware Alphabetical Sorting

The simples solution i could come up with, convert all chars to their base (á -> a), using String.tr would be ideal for this task, but its not UTF8 aware…

If you dare to digg deeper, more information can be found on wiki and on coding horror

list.sort_by{|name| convert_umlaut_to_base(name)}

  def convert_umlaut_to_base(input)
    text = input.dup
    %w[áäa ÁÄA óöo ÓÖO íi ÍI úüu ÚÜU ée ÉE ßs].each do |set|
      text.gsub!(/[#{set[0..-2]}]/,set[-1..-1])
    end
    text
  end

One thought on “Umlaut Aware Alphabetical Sorting

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s