「1,112」を1ではなく整数1112に変換するための優れた方法はありますか?
私は1つ持っていますが、きちんとしていません:
"1,112".split(',').join.to_i #=> 1112
「1,112」を1ではなく整数1112に変換するための優れた方法はありますか?
私は1つ持っていますが、きちんとしていません:
"1,112".split(',').join.to_i #=> 1112
これはどう?
"1,112".delete(',').to_i
また、コードが正しくローカライズされていることを確認したり、ユーザーが「国際」表記に慣れていることを確認したりすることもできます。たとえば、「1,112」は、実際には国によって異なる数値を意味します。ドイツでは、1000 か何かではなく、1 を少し上回る数を意味します。
対応するウィキペディアの記事はhttp://en.wikipedia.org/wiki/Decimal_markにあります。ただ、この時点では書き方が悪いようです。たとえば、中国人として、中国の千の区切り記号に関するこれらの説明がどこから来たのかわかりません。
もう少し便利
"1,1200.00".gsub(/[^0-9]/,'')
「1 200 200」も適切に機能します
誰かがカンマ以上のサブアウトを探しているなら、私は以下のファンです:
"1,200".chars.grep(/\d/).join.to_i
パフォーマンスについてはわかりませんが、 a よりも柔軟ですgsub
。つまり:
"1-200".chars.grep(/\d/).join.to_i
私は使用しString#tr
ます:
"1,112".tr(',','').to_i # => 1112