数字と文字が入り混じった文字列、例えば"abc12345def67890"
のような文字列から数字のみを取り出す方法について。
正規表現で数字以外を削除します。
num = "abc12345def67890".gsub(/[^\d]/, "").to_i # num => 1234567890
これを利用すると記号付きの文字(100kg, 100km等など)から数字のみを抜き出して計算できました。
これなら例えば単位ごとに正規表現を書き換えるというようなことも無いので色々と使えるのではないかと思いました。
(これを思いつくまでに30分くらい色々考えてしまったのは内緒...)
追記
コメントにて特定の種類の文字をすべて消すのであればdelete
のほうが向いていると教えていただきました。
"abc12345def67890".delete("^0-9")
ベンチマーク(コメント欄参照)でも数倍の差が出る模様です。