class String def to_normal # String.tr() no funciona con caracteres de mas de 1 byte d = self.downcase accents = { 'á'=>'a', 'é'=>'e', 'í'=>'i', 'ó'=>'o', 'ú'=>'u', 'à'=>'a', 'è'=>'e', 'ì'=>'i', 'ò'=>'o', 'ù'=>'u', 'ñ'=>'n', 'ä'=>'a', 'ë'=>'e', 'ï'=>'i', 'ö'=>'o', 'ü'=>'u', '¿'=>'' } accents.each do |accent,rep| d.gsub!(accent,rep) end d.gsub(/\W+/, ' ').strip.gsub(/\ +/, '_') end end