web-dev-qa-db-ja.com

コンマを含む文字列を整数に変換します

「1,112」を1ではなく整数1112に変換する適切な方法はありますか?

私は持っていますが、きちんとはしていません:

"1,112".split(',').join.to_i #=> 1112
94
mCY

これはどう?

 "1,112".delete(',').to_i
171
Michael Kohl

また、コードが正しくローカライズされていることを確認するか、ユーザーが「国際」表記に慣れていることを確認することもできます。たとえば、「1,112」は実際には異なる国で異なる番号を意味します。ドイツでは、数が千などではなく、1を少し超えていることを意味します。

対応するウィキペディアの記事は http://en.wikipedia.org/wiki/Decimal_mark にあります。しかし、現時点ではあまり書かれていないようです。例えば、中国人として、中国の千の区切りについてのこれらの説明はどこから来たのかわかりません。

5
Yì Yáng

いくつかのより便利な

"1,1200.00".gsub(/[^0-9]/,'') 

「1 200 200」も適切に動作します

4
Alexey Novikov

以下は、機能する別の方法です。ただし、他の方法の一部と同様に、小数点以下の桁は削除されます。

a = 1,112
b = a.scan(/\d+/).join().to_i => 1112
2
Mahesh

誰かがコンマよりもサブアウトすることを探しているなら、私はファンです:

"1,200".chars.grep(/\d/).join.to_i

パフォーマンスについては知らないが、それはgsubよりも柔軟性があります。つまり:

"1-200".chars.grep(/\d/).join.to_i
1
davidpm4

String#tr を使用します:

"1,112".tr(',','').to_i # => 1112
1
Arup Rakshit