2010-10-12 10 views
5

Si je fais une capture d'écran et que je récupère une chaîne qui semble se terminer par des espaces, ni string.strip, ni strip.gsub (/ \ s/u, '') ne supprime le caractère. Je suppose que c'est un problème d'encodage de caractères. Aucune suggestion?Ruby 1.9 ne supprime pas les espaces blancs

Répondre

12

Je pense, il y a beaucoup de "caractères d'espace". Vous pouvez utiliser quelque chose comme ceci:

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

'my_string.tr (" \ 302 \ 240 ", '') .strip' devrait être un peu plus rapide – lulalala

+1

À noter - http://stackoverflow.com/questions/2588942/convert-non-breaking-spaces-to -spaces-in-ruby - "Utilise'/[[: space:]]/'pour faire correspondre tous les espaces, y compris les espaces Unicode comme les espaces insécables, contrairement'/\ s/', qui ne correspond qu'aux espaces ASCII " – DreadPirateShawn

2

Déterminez le code de caractère du dernier caractère (str[-1].ord) et recherchez-le explicitement et détruisez-le. Rincez/répétez s'il existe plus de caractères indésirables après cela. Après cela, rapportez ici ce que le personnage invisible était. (Peut-être est-il seulement invisible parce que la police que vous utilisez n'a pas ce glyphe?)

+1

+1 Pour m'apprendre à pêcher. Je vous remercie. – fyz

4

Vous pouvez essayer ceci: my_string.gsub(/\A[[:space:]]+|[[:space:]]+\z/, '')

Cela devrait supprimer tous les caractères d'espace depuis le début et la fin de la chaîne, y compris toutes les variations possibles de l'espace unicode.