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