Y-a-t-il une solution simple et propre pour trier un ensemble de chaines
de caractère contenant des accent?
Un exemple concrêt de mon problème
script/console
[“az”,“aea”,“aéb”].sort
=> [“aea”, “az”, “aéb”]
Bien sur, j’aimerais obtenir
[“aea”, “aéb”, “az”]
Je n’ai pas su obtenir de réponse rapidement avec google, je m’en remet
donc à vos lumières!
Seb
Voici une solution…
class String
def no_accent
require ‘rubygems’
require ‘htmlentities’
HTMLEntities.new.encode( self, :named ).gsub(
/&([A-za-z])(?:acute|cedil|circ|grave|ring|tilde|uml);/, ‘\1’
).gsub( /&([A-za-z]{2})(?:lig);/, ‘\1’ ).gsub( /&[^;]+;/, ‘’ )
end
end
[“az”,“aea”,“aéb”].sort { |x, y| x.no_accent <=> y.no_accent }
Greg
Le 22 janvier 2009 19:55, Sébastien Lamy [email protected] a écrit :
Hum…
C’était sans compter sur String.tr_s
Donc je propose :
class String
def no_accent
self.tr_s( ‘ÁÀÂÄÃÅÇÉÈÊËÍÏÎÌÑÓÒÔÖÕÚÙÛÜÝáàâäãåçéèêëíìîïñóòôöõúùûüýÿ’,
‘AAAAAACEEEEEIIIINOOOOOUUUUYaaaaaaceeeeiiiinooooouuuuyy’ )
end
end
[“az”,“aea”,“aéb”].sort { |x, y| x.no_accent <=> y.no_accent }
Le 22 janvier 2009 21:04, Gregoire LEJEUNE
[email protected] a écrit :
Saperlipopette ! Il y a un E de trop…
Donc :
class String
def no_accent
self.tr_s( ‘ÁÀÂÄÃÅÇÉÈÊËÍÏÎÌÑÓÒÔÖÕÚÙÛÜÝáàâäãåçéèêëíìîïñóòôöõúùûüýÿ’,
‘AAAAAACEEEEIIIINOOOOOUUUUYaaaaaaceeeeiiiinooooouuuuyy’ )
end
end
2009/1/22 Gregoire LEJEUNE [email protected]:
Salut Greg et Sébastien,
Juste pour la forme, voici une version utilisant la libraire ‘unicode’
plutôt que ‘htmlentities’, et avec un peu de magie
La fonction n’est
pas de moi, elle avait été postée l’année dernière sur la ML Rubyfr-public.
http://gist.github.com/50689
Le 22.01.2009 21:04, Gregoire LEJEUNE a écrit :
end
Un exemple concrêt de mon problème
script/console
[“az”,“aea”,“aéb”].sort
=> [“aea”, “az”, “aéb”]
Bien sur, j’aimerais obtenir
[“aea”, “aéb”, “az”]
–
Farzad FARID / Architecte Open Source - Associé
Pragmatic Source / http://www.pragmatic-source.com
Tel : +33 9 53 19 21 90 / Mob : +33 6 03 70 65 46
Héhé, il faudra que je fasse un patch à mon projet
http://naturalsort.rubyforge.org/
(pub perso gratos) avec une de ces bonnes idées 
On Jan 22, 9:21 pm, Gregoire LEJEUNE [email protected]