Ruby Recipe38 数値を表す文字列か調べる
文字列が"1"とか"123"とか数値を表すものかどうかを調べたい時には以下のやり方で調べられます。
# Integer()で変換できれば数値、例外発生したら違う def integer_string?(str) Integer(str) true rescue ArgumentError false end # Float()で変換できれば数値、例外発生したら違う def float_string?(str) Float(str) true rescue ArgumentError false end
ちなみに結果は以下のようになります。
str = "あいうえお" str2 = "123" str3 = "3.14" str4 = "12345" # 普通の文字列 integer_string?(str) #=> false # 数値の文字列 integer_string?(str2) #=> true # 小数点の文字列 integer_string?(str3) #=> false # 全角数字の文字列 integer_string?(str4) #=> false # 普通の文字列 float_string?(str) #=> false # 数値の文字列 float_string?(str2) #=> true # 小数点の文字列 float_string?(str3) #=> true # 全角数字の文字列 float_string?(str4) #=> false
小数点の場合、結果が異なるので(Integer()使ってるので)場合によって使い分けるのがいいかもですね!
ちなみに to_i メソッドとかの場合、無理やり変換しようとしてしまい例外が発生しないので、Integer()を使わないとなのですよー
- 作者: 青木峰郎,後藤裕蔵,高橋征義,まつもとゆきひろ
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2010/08/28
- メディア: 単行本
- 購入: 4人 クリック: 80回
- この商品を含むブログ (27件) を見る