2010-10-12 18 views
5

Im haciendo algunos raspado de pantalla y estoy recibiendo una cadena que parece terminar con espacios en blanco, pero ni string.strip o strip.gsub (/ \ s/u, '') elimina el personaje.Ruby 1.9 tira no elimina el espacio en blanco

Supongo que es un problema de codificación de caracteres. ¿Alguna sugerencia?

Respuesta

12

Creo que hay muchos "caracteres espaciales". Puede usar algo como esto:

my_string.gsub("\302\240", ' ').strip 
+1

'my_string.tr (" \ 302 \ 240 ", '') .strip' debe ser un poco más rápido – lulalala

+1

Digno de mención - http://stackoverflow.com/questions/2588942/convert-non-breaking-spaces-to -spaces-in-ruby - "Utilice'/[[: space:]]/'para unir todos los espacios en blanco, incluido el espacio en blanco Unicode como espacios sin interrupción. Esto es diferente a'/\ s/', que solo coincide con el espacio en blanco ASCII " – DreadPirateShawn

2

Descubre el código del último carácter (str[-1].ord) y explícitamente busca y destrúyelo. Enjuague/repita si existen más caracteres no deseados después de eso. Después de hacer esto, informa aquí qué fue el personaje invisible. (¿Quizás solo sea invisible porque la fuente que está utilizando no tiene ese glifo?)

+1

+1 Por enseñarme a pescar. Gracias. – fyz

4

Puede probar esto: my_string.gsub(/\A[[:space:]]+|[[:space:]]+\z/, '')

Esto debería eliminar todos los espacios desde el principio y el final de la cadena, incluyendo todas las posibles variaciones espaciales Unicode.

Cuestiones relacionadas