code_junkie

How do I replace accented Latin characters in Ruby?

Nov 11th, 2011
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.49 KB | None | 0 0
  1. class Foo
  2. validates_presence_of :name
  3.  
  4. before_validate :set_canonical_name
  5.  
  6. private
  7.  
  8. def set_canonical_name
  9. self.canonical_name ||= canonicalize(self.name) if self.name
  10. end
  11.  
  12. def canonicalize(x)
  13. x.downcase. # something here
  14. end
  15. end
  16.  
  17. x.downcase.gsub(/[àáâãäå]/,'a').gsub(/æ/,'ae').gsub(/ç/, 'c').gsub(/[èéêë]/,'e')....
  18.  
  19. >> "àáâãäå".chars.normalize(:kd).gsub(/[^x00-x7F]/n,'').downcase.to_s
  20. => "aaaaaa"
  21.  
  22. register_replacement([0x008A].pack('U'), 'S')
Add Comment
Please, Sign In to add comment