フォーム"$39,900"
にドルの値を含む文字列を整数に変換して、それを使用して計算を実行するにはどうすればよいですか?
試してみると思いましたgsub
が、うまくいかないようです。
str = "$39,900"
str.strip.gsub('$' '')
=> #<Enumerator: "$39,900":gsub("$")>
誰かがこれについて行くための適切な方法を私と共有できますか?
私は使用します:
str = "$39,900"
str.tr('^0-9', '').to_i # => 39900
内訳は次のとおりです。
str # => "$39,900"
.tr('^0-9', '') # => "39900"
.to_i # => 39900
'^0-9', ''
intr
は、「0..9以外のすべてを、に置き換えて、''
数字のみにする」という意味です。
tr
は非常に高速で、gsub
この使用よりもはるかに高速であり、この種の問題について知って使用する価値があります。
正規表現での使用を主張する場合gsub
、これはそれを行います:
str.gsub(/\D+/, '').to_i # => 39900
ただし、それでもを使用することをお勧めしtr
ます。理由は次のとおりです。
require 'fruity'
str = "$39,900"
compare do
_gsub { str.gsub(/\D+/, '') }
_tr { str.tr('^0-9', '') }
jason_yost { str.scan(/\d/).join('') }
nikita_mishain { str.tr('$,', '') }
ruben_tf { str.gsub(/[^\d]/, '') }
end
# >> Running each test 8192 times. Test will take about 2 seconds.
# >> nikita_mishain is similar to _tr
# >> _tr is faster than ruben_tf by 4x ± 1.0
# >> ruben_tf is similar to _gsub
# >> _gsub is faster than jason_yost by 2x ± 0.1
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加