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 bien:
"1,112".split(',').join.to_i #=> 1112
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 bien:
"1,112".split(',').join.to_i #=> 1112
Que dis-tu de ça?
"1,112".delete(',').to_i
Vous pouvez également vous assurer que votre code se localise correctement ou vous assurer que les utilisateurs sont habitués à la notation «internationale». Par exemple, «1 112» signifie en fait des nombres différents selon les pays. En Allemagne, cela signifie le nombre un peu plus d'un, au lieu de mille et quelque chose.
L'article Wikipédia correspondant est disponible à l' adresse http://en.wikipedia.org/wiki/Decimal_mark . Il semble cependant mal rédigé pour le moment. Par exemple, en tant que Chinois, je ne sais pas d'où vient cette description d'environ mille séparateurs en Chine.
la source
Certains plus pratiques
il fait fonctionner correctement "1 200 200" aussi
la source
'1,1200.00'.gsub(/[^0-9\.]/,'').to_f
."1,1200.00"
à"1120000"
? Ne voulez-vous pas simplement remplacer le,
(ou, selon les paramètres régionaux, le.
)? De plus, cela ne le convertit pas en entier ou en flottant, juste une chaîne sans délimiteurs.Ce qui suit est une autre méthode qui fonctionnera, bien que comme avec certaines des autres méthodes, elle supprime les décimales.
la source
Je ferais en utilisant
String#tr
:la source
Si quelqu'un cherche à faire plus qu'une virgule, je suis fan de:
je ne sais pas sur les performances mais, c'est plus flexible qu'un
gsub
, c'est à dire:la source
la source