Camel case a string ( removing accents )
# input str = " j'ai écris l'œuvre de ma vie "
# output str :"JAiEcrisLOeuvreDeMaVie"
# output str :"JAiEcrisLOeuvreDeMaVie"
accents = { ['á','à','â','ä','ã','Ã','Ä','Â','À'] => 'a', ['é','è','ê','ë','Ë','É','È','Ê'] => 'e', ['í','ì','î','ï','I','Î','Ì'] => 'i', ['ó','ò','ô','ö','õ','Õ','Ö','Ô','Ò'] => 'o', ['œ'] => 'oe', ['ß'] => 'ss', ['ú','ù','û','ü','U','Û','Ù'] => 'u' } accents.each do |ac,rep| ac.each do |s| str.gsub!(s, rep) end end str.gsub!(/[^a-zA-Z_\- ]/," ") str = " " + str.split.join(" ") str.gsub!(/ (.)/) { $1.upcase }