2011-02-01 13 views

Respuesta

23
irb(main):001:0> d = "foo\u00A0\bar" 
=> "foo \bar" 
irb(main):002:0> d.gsub("\u00A0", "") 
=> "foo\bar" 
2

Es un hilo antiguo, pero tal vez ayuda a alguien. Me encontré buscando una solución al mismo problema cuando descubrí que la tira no hace el trabajo. He hablado con el método ord cuál era el carácter y solía chr para representarla en gsub

2.2.3 :010 > 160.chr("UTF-8") 
=> " " 
2.2.3 :011 > 160.chr("UTF-8").strip 
=> " " 
2.2.3 :012 > nbsp = 160.chr("UTF-8") 
=> " " 
2.2.3 :013 > nbsp.gsub(160.chr("UTF-8"),"") 
=> "" 

no podía entender por qué strip no quita algo que parecía un espacio para mí lo que he comprobado here lo ASCII 160 en realidad es.

10

En caso de que no se preocupan por el espacio de no separación en concreto, sino de cualquier carácter "especial" Unicode los espacios en blanco que puede aparecer en la cadena, se puede reemplazar el uso de la expresión soporte de POSIX para los espacios en blanco:

s.gsub(/[[:space:]]/, '') 

Estas expresiones de corchetes (a diferencia de las coincidencias como \s) no solo coinciden con los caracteres ASCII, sino con todos los caracteres Unicode de una clase.

Para más detalles ver the ruby documentation

+0

muy útil cuando se tiene un espacio en blanco regular más el código HTML molestos '& nbsp' en la misma cadena. – MatzFan

Cuestiones relacionadas