Array Include en String

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.