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
Je pense, il y a beaucoup de "caractères d'espace". Vous pouvez utiliser quelque chose comme ceci:
my_string.gsub("\302\240", ' ').strip
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 Pour m'apprendre à pêcher. Je vous remercie. – fyz
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.
'my_string.tr (" \ 302 \ 240 ", '') .strip' devrait être un peu plus rapide – lulalala
À 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