Existe-t-il une méthode intéressante pour convertir "1 112" en entier 1112, au lieu de 1?
J'en ai un, mais pas soigné:
"1,112".split(',').join.to_i #=> 1112
Que dis-tu de ça?
"1,112".delete(',').to_i
Vous voudrez peut-être aussi vous assurer que votre code se localise correctement ou que les utilisateurs sont habitués à la notation "internationale". Par exemple, "1 112" signifie en réalité des nombres différents selon les pays. En Allemagne, le chiffre est un peu supérieur à un, au lieu de mille.
L'article correspondant de Wikipedia se trouve à http://en.wikipedia.org/wiki/Decimal_mark . Cela semble cependant être mal écrit. Par exemple, en tant que Chinois, je ne sais pas d'où vient cette description du séparateur de milliers en Chine.
Certains plus pratique
"1,1200.00".gsub(/[^0-9]/,'')
"1 200 200" fonctionne correctement
Ce qui suit est une autre méthode qui fonctionnera, bien que, comme certaines des autres méthodes, elle supprime les décimales.
a = 1,112
b = a.scan(/\d+/).join().to_i => 1112
Si quelqu'un cherche à remplacer plus d'une virgule, je suis fan de:
"1,200".chars.grep(/\d/).join.to_i
je ne sais pas à propos de la performance, mais il est plus flexible qu'un gsub
, c'est-à-dire:
"1-200".chars.grep(/\d/).join.to_i
Je voudrais utiliser String#tr
:
_"1,112".tr(',','').to_i # => 1112
_