Buen dia a todos, tengo varios dias buscando una solucion a un problema,
lo expongo aqui, si alguien sabe la solucion, se los agradeceria.
Quiero quitarle las letras con acentos a las palabras antes de
guardarlas, he probado e diferentes formas y nada.
before_save :quita_acentos
PRUEBA 1.-
def quita_acentos
a = [“á”, “é”, “Ô, “ó”, “ú”]
if nombre.include? a.to_s
nombre.delete a
end
end
PRUEBA 2.-
def quita_acentos
a = [“á”, “é”, “Ô, “ó”, “ú”]
a.each { |x| nombre.delete x }
end
end
Gracias
2008/6/12 Luis M. [email protected]:
a = [“á”, “é”, “Ô, “ó”, “ú”]
end
Gracias
Posted via http://www.ruby-forum.com/.
Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es
No se si esto te puede ayudar, alguna vez lo usé y me sirvió, probalo.
Suerte, saludos.
Juan MatÃas
class String
ACENTOS =
[[“\303\241”,“a”],[“\303\251”,“e”],[“\303\255”,“i”],[“\303\263”,“o”],[“\303\272”,“u”]]
def sin_acentos
string = self.dup
ACENTOS.each do |e|
string.tr!(e[0],e[1])
end
string
end
def sin_acentos!
ACENTOS.each do |e|
self.tr!(e[0],e[1])
end
self
end
end
hola,
PRUEBA 1.-
def quita_acentos
a = [“á”, “é”, “Ô, “ó”, “ú”]
if nombre.include? a.to_s
nombre.delete a
end
end
eso funcionarÃa, si no fuera porque “delete” devuelve la cadena sin el
carácter que eliminas, pero no modifica el objeto en sà mismo. Cambiando
delete por delete! deberÃa funcionar
de todos modos, es una forma poco óptima (y muy larga) para sustituir
caracteres. El método gsub (o gsub!) te será muy útil.
y ya por complicarlo un poco… ten en cuenta que quizás tienes que
incluir más caracteres a sustituir si las letras que te llegan pueden
ser mayúsculas o minúsculas, tienes la ñ, diéresis, la cedilla… etc
jurarÃa que se ha hablado de otras soluciones (Iconv) para eso en la
lista alguna vez, pero me parece que Iconv daba algún problema en según
qué plataformas… buscando en los archivos del foro seguro que
encuentras algo de eso.
saludos,
javier ramÃrez
Gracias por sus solcuiones y sobre todo por la rapidez de sus
respuestas, empezare a probar.
Saludos
Perdón, me olvidé, el primer metodo te devuelve una copia del string, el
otro, el que tiene el sÃmbolo de exclamación; modifica el string.
Ej:
palabra = “exclamación”
palabra.sin_acentos
“exclamacion”
palabra
“exclamación”
palabra = “exclamación”.sin_acentos!
“exclamacion”
palabra
“exclamacion”
2008/6/12 Luis M. [email protected]:
Luis M. wrote:
a = [“á”, “é”, “Ô, “ó”, “ú”]
end
Gracias
s = ‘à céñtös!’
=> “à céñtös!”
s.chars.decompose.string.scan(/[a-zA-Z0-9]/).join
=> “acentos”
Salud y belleza para todos,
Mauro.