Rubyで文字列が整数か小数かを判定するコード

このエントリーをはてなブックマークに追加
LINEで送る

常識なのかもしれないが、コーディングしていて改めて気がついたのでメモ。

文字列の数字表現で”1234.56″といった感じのものを読んで整数なのか小数なのかをチェックする場合、マッチさせたいパターンは詳細なものから書く。
例えば以下のように書くと

c = "12345.67"
if  c =~ /d/
  puts c + "は整数です"
elsif c =~ /d+.d+/
  puts c + "は小数です"
end

全て整数として判断される。
このような場合は正規表現のより詳細なものから先に書いておく必要がある。

c = "12345.67"
if c =~ /d+.d+/
  puts c + "は小数です"
elsif  c =~ /d/
  puts c + "は整数です"
end

こうすれば小数は小数としてマッチするようになる。
もっとスマートなやり方があればコメントしていただきたい。

Rubyで文字列が整数か小数かを判定するコード” への1件のコメント

  1. 2008年の記事にコメントしても詮無きことだが、はてブで見つけたので。
    その条件だと整数や小数を「含む」文字列にマッチする。つまり、”123abc”が整数と判定される。
    http://ideone.com/mfv2IA

    /^\d+$/ のように、^(行頭)、$(行末)を入れれば良い(誤判定もなくなる)。
    複数行のテキストの場合、代わりに\A(文字列の先頭)、\Z(文字列の末尾)を指定する。

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>