Dagi3d v4

limpiar cadena de texto

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
Skiter
20/01/2006 02:06

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.

Deja un comentario
*: campos obligatorios. La dirección de correo no será publicada