l'upcase d'accent c'est possible avec ActiveSupport

Alors que sur IRC quelqu'un demande, comment faire un upcase sur des accents et conserver ces accents en majuscule, je lui répond que ce n'est pas possible car Ruby 1.8 ne supporte pas l'UTF8.

Je propose donc une solution peu élégante. Lister chaque éléments qui soient considéré comme non modifié par upcase et faire une liste de gsub comme ceci

irb(main):002:0> puts "aéèb".gsub("é", "É").gsub("è", "È").upcase
AÉÈB
=> nil

C'est alors que Farzy nous fournit un bout de code qui évite mon code peu pratique et surtout fonctionne avec tous les caractères unicode.

% irb
>> $KCODE = 'u'
=> "u"
>> "éè".upcase
=> "éè"
>> require 'activesupport'
=> true
>> "éè".chars.upcase.to_s
=> "ÉÈ"
>> RUBY_VERSION
=> "1.8.5"
>>

Il faut effectivement utiliser la librairie ActiveSupport qui fournit un support UTF8, mais cela fonctionne parfaitement. Merci à lui pour cet petite astuce.

[...]
Published on Mar 02 déc 2008 00:14
0 commentaires

RSS Follow me on Twitter