Cuando estaba programando esta página, necesitaba implementar una función que se encargase de eliminar carácteres que pudiesen resultar molestos a la hora de generar el id y la URL del post.
El problema que me encontré es que no podía ir recorriendo la cadena carácter a carácter y sustituirlo cuando fuera necesario, ya que en realidad cada “letra” está compuesta de varios carácteres debido a que en los formularios estaba usando la codificación utf-8.
La solución que encontré fue convertir el texto a iso-8859-1 y realizar las comprobaciones pertinentes. Finalmente ya solo quedaba convertir la cadena de nuevo a utf-8.
Seguramente se salte algún carácter pero será cuestión de ir ampliándola según vaya haciendo falta.
require 'iconv'
def clean_up(string)
chars = {
"á" => "a",
"í" => "i",
"é" => "e",
"ó" => "o",
"ú" => "u",
"ä" => "a",
"ë" => "e",
"ï" => "i",
"ö" => "o",
"ü" => "u",
"ñ" => "n",
"ç" => "c",
" " => "-"
}
str = string.dup
str.strip!
str.downcase!
str.delete!(".,:(){}!|\"\\'?¿+-#$%&/")
str = Iconv.conv("iso-8859-1", "utf-8", str)
text = ""
str.each_byte {
|c|
c = Iconv.conv("utf-8","iso-8859-1", c.chr)
if (chars.has_key?(c))
text << chars[c]
else
text << c
end
}
text
end
WOw…no sabia que tenias blog tio. Y encima de los que sirven para aprender y todo…jejeje
Ya veo que te lo hjas programado tu solito (no como otros, que tiramos de cosas ya hechas como jaws)
Si señor, felicidades. Te ire leyendo poco a poco.
Saludos.