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


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

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

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

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

2コメント

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

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

  2. コメントありがとうございます。
    返事が遅くなり申し訳ありませんでした。
    (しばらく放置していたブログでしたので(汗)。これからは頻繁に更新しようと思っています。)
    おっしゃる通り、これでは誤判定されますね。
    正規表現は難しいですね。
    これからはテストコードでいろんなパターンをチェックするようにしたいと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です