Caracteres no ingleses y string.split(//)

Hola gente.

Seguro que es una pregunta de novato pero no sé como googlear para
encontrar
solución.
Cuando divido una palabra en sus caracteres con .split(//) los
caracteres especiales no-ingleses me aparecen en formato ‘escapado’ :
\nnn

Pasa con cualquier combinación de split que haga:

“ñoño”.split(//).each { |l| p l }
=> ["\303", “\261”, “o”, “\303”, “\261”, “o”]

“ñoñoyjesús”.split(/y/).each { |l| p l }
=> ["\303\261o\303\261o", “jes\303\272s”]

Tengo un problema con esto porque el valor devuelto por el .split lo
uso luego como clave de un Hash y claro… no es lo mismo la clave
"ñ"que la clave “\303”, “\261”, además que esta última son como si fueran
dos pasadas del each…

Es como si a cada resultado del .split se le pasara internamente el
método: .inspect ó .dump

Alguna sugerencias o capón :slight_smile:

f.

2008/2/8 Fernando G. [email protected]:

“ñoño”.split(//).each { |l| p l }
método: .inspect ó .dump
[email protected]
simplelogica.net

Si estás utilizando Rails para tratar con caracteres UTF8 siempre
debes utilizar el método chars sobre la cadena:

“ñoño”.chars.split(//).map &:string
=> [“ñ”, “o”, “ñ”, “o”]

Espero que te sirva.

El 8/02/08, Daniel R. Troitiño [email protected]
escribió:> >

Es como si a cada resultado del .split se le pasara internamente el
método: .inspect ó .dump

Si estás utilizando Rails para tratar con caracteres UTF8 siempre
debes utilizar el método chars sobre la cadena:

“ñoño”.chars.split(//).map &:string
=> [“ñ”, “o”, “ñ”, “o”]

Gracias Daniel,

Y fuera de Rails? … cómo se hace? … tengo que importar alguna cosa?

“ñoño”.chars.split(//).map
NoMethodError: undefined method `chars’ for “\303\261o\303\261o”:String

Saludos
f.

2008/2/8 Fernando G. [email protected]:

Y fuera de Rails? … cómo se hace? … tengo que importar alguna cosa?

“ñoño”.chars.split(//).map
NoMethodError: undefined method `chars’ for “\303\261o\303\261o”:String

Dale una mirada a esto:

http://www.tbray.org/ongoing/When/200x/2006/10/13/String-Walking

2008/2/9, Federico B. [email protected]:

2008/2/8 Fernando G. [email protected]:

Y fuera de Rails? … cómo se hace? … tengo que importar alguna cosa?

“ñoño”.chars.split(//).map
NoMethodError: undefined method `chars’ for “\303\261o\303\261o”:String

Dale una mirada a esto:

ongoing by Tim Bray · Ruby String Walking

Oláaa¡¡. menudo lío se monta el autor del post… que miedo he pasado.

Menos mal que me he leído los comentarios :slight_smile:

irb> “ñoño”.scan(/./u) { |c| puts c }
ñ
o
ñ
o

Gracias :slight_smile:

f.

2008/2/8 Fernando G. [email protected]:

Oláaa¡¡. menudo lío se monta el autor del post… que miedo he pasado.

Menos mal que me he leído los comentarios :slight_smile:

irb> “ñoño”.scan(/./u) { |c| puts c }

Mira las implicacions en eficiencia que menciona el autor por usarlo
así, si vas a estar haciendo algo semi-intensivo seguramente no
querrás estar haciendo una cadena nueva por cada letra.

El 9/02/08, Federico B. [email protected]
escribió:> querrás estar haciendo una cadena nueva por cada letra.

cachis¡…